home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Online / opennap / ChangeLog < prev    next >
Text File  |  2001-06-08  |  176KB  |  5,005 lines

  1. 2001-03-03  drscholl  <drscholl@users.sourceforge.net>
  2.  
  3.     * manual.html, napigator.c, opennap.h, sample.config, Makefile.in, config.c, configure, init.c, main.c:
  4.     check connection result to stats server.
  5.  
  6.     added report_ip, report_port, report_name for use with napigator stats
  7.     server.
  8.  
  9. 2001-03-01  drscholl  <drscholl@users.sourceforge.net>
  10.  
  11.     * Makefile.am, Makefile.in, configure, configure.in, init.c:
  12.     enable signal handling under win32/cygwin
  13.  
  14. 2001-02-28  drscholl  <drscholl@users.sourceforge.net>
  15.  
  16.     * manual.html, opennap.h, Makefile.in, config.c, configure, configure.in, login.c:
  17.     added boolean restrict_registratration to disallow auto registration by
  18.     clients. useful for implementing closed servers.
  19.  
  20.     * sample.block:
  21.     compacted sample.block to group names by the first letter.  this reduces
  22.     the number of expressions that are needed to be matched against each
  23.     shared file.
  24.  
  25.     * configure.in:
  26.     fixed bug #233526   should use $enableval instead of $withval for the
  27.     chroot test in configure.in
  28.  
  29.     * main.c: added poll() debugging
  30.  
  31. 2001-02-26  drscholl  <drscholl@users.sourceforge.net>
  32.  
  33.     * ChangeLog, NEWS, README, manual.html, sample.block:
  34.     updated ChangeLog, NEWS, manual.html
  35.  
  36. 2001-02-23  drscholl  <drscholl@users.sourceforge.net>
  37.  
  38.     * add_file.c, config.c, opennap.h:
  39.     added allow_share config boolean option to disallow sharing files
  40.     completely
  41.  
  42.     * filter.c:
  43.     commented out log message in is_blocked()
  44.  
  45.     * Makefile.in, add_file.c, config.c, configure, configure.in, filter.c, sample.block:
  46.     block file changed to list of regular expressions instead of hash table of
  47.     words.  this more effectively blocks individual files without affecting
  48.     as many unrelated files.
  49.  
  50. 2001-02-23  drscholl  <drscholl@users.sourceforge.net>
  51.  
  52.     * add_file.c, config.c, opennap.h:
  53.     added allow_share config boolean option to disallow sharing files
  54.     completely
  55.  
  56.     * filter.c:
  57.     commented out log message in is_blocked()
  58.  
  59.     * Makefile.in, add_file.c, config.c, configure, configure.in, filter.c, sample.block:
  60.     block file changed to list of regular expressions instead of hash table of
  61.     words.  this more effectively blocks individual files without affecting
  62.     as many unrelated files.
  63.  
  64.     * sample.block, Makefile.am:
  65.     added sample block file
  66.  
  67.     * add_file.c, filter.c, init.c, opennap.h:
  68.     added `block' file which contains one word per line.  if a shared file
  69.     contains any of the keywords in the file, the file will not be indexed at
  70.     all, and thus will not be able to be xferred.  note that if the filename
  71.     exists on the remote server, no blocking is done locally, so all of the
  72.     servers must act in conjunction to block inappropriate material.
  73.  
  74. 2001-02-17  drscholl  <drscholl@users.sourceforge.net>
  75.  
  76.     * configure, configure.in, main.c, napigator.c, opennap.h:
  77.     global.fdmap should be sized according to global.max_fd
  78.  
  79. 2001-02-15  drscholl  <drscholl@users.sourceforge.net>
  80.  
  81.     * napigator.c:
  82.     hash string was not \0 terminated
  83.  
  84.     * Makefile.am, Makefile.in, add_file.c, announce.c, ban.c, browse.c, buffer.c, change.c, channel.c, class.c, client_quit.c, config.c, debug.c, download.c, fast_snprintf.c, filter.c, free_user.c, getopt.c, glob.c, handler.c, hash.c, hashlist.c, hotlist.c, init.c, join.c, kick.c, kill_user.c, level.c, list.c, list_channels.c, list_users.c, login.c, main.c, metaserver.c, mkpass.c, motd.c, muzzle.c, napigator.c, network.c, opennap.h, part.c, part_channel.c, ping.c, privmsg.c, proxy-client.c, public.c, redirect.c, remove_connection.c, remove_file.c, resume.c, sample.config, search.c, server_connect.c, server_login.c, serverlib.c, setup.c, spyserv.c, synch.c, topic.c, upload_complete.c, userdb.c, usermode.c, util.c, whois.c:
  85.     updated copyright date to cover 2001
  86.  
  87.     added add_fd()/remove_fd() to handle manipulation of the global.poll array
  88.  
  89.     added support for pushing stats to napigator as part of their new
  90.     architecture.
  91.  
  92. 2001-02-13  drscholl  <drscholl@users.sourceforge.net>
  93.  
  94.     * main.c, remove_connection.c:
  95.     fixed crash on server shutdown with debugging enabled
  96.  
  97.     * main.c:
  98.     fixed broken compile with select()-only support
  99.  
  100.     * config.c, handler.c, opennap.h:
  101.     added `min_read' variable to log() when only reading a small amount of data
  102.     from a server link
  103.  
  104.     * server_login.c, server_usage.c, synch.c, timer.c, userdb.c, util.c, whois.c, TODO, ban.c, buffer.c, channel.c, free_user.c, handler.c, init.c, join.c, login.c, main.c, opennap.h, search.c:
  105.     added a global_t to use as a global namespace
  106.  
  107.     when using poll(), keep a global.fdmap[] array to map the fd to the
  108.     global.poll[] entry associated with the fd to allow skipping of unimportant
  109.     descriptors
  110.  
  111. 2001-02-08  drscholl  <drscholl@users.sourceforge.net>
  112.  
  113.     * README, metaserver.c, privmsg.c:
  114.     sig_meta was never reset
  115.  
  116. 2001-02-05  drscholl  <drscholl@users.sourceforge.net>
  117.  
  118.     * Makefile.am, Makefile.in, channel.c, class.c, configure, configure.in, kick.c, main.c, metaserver.c, opennap.h, sample.conf, sample.config:
  119.     renamed sample.conf -> sample.config
  120.  
  121.     remove TS code from all but channel_op.
  122.  
  123.     servers will no longer correct channel ops.  based upon the timestamp they
  124.     will just affect the local server and assume the remote side will do the
  125.     same.
  126.  
  127. 2001-02-02  drscholl  <drscholl@users.sourceforge.net>
  128.  
  129.     * ChangeLog, NEWS:
  130.     updated ChangeLog
  131.  
  132.     updated NEWS file
  133.  
  134. 2001-01-31  drscholl  <drscholl@users.sourceforge.net>
  135.  
  136.     * metaserver.c:
  137.     added q's metaserver patch to read servers from a config file
  138.  
  139. 2001-01-30  drscholl  <drscholl@users.sourceforge.net>
  140.  
  141.     * buffer.c, config.c, main.c, opennap.h:
  142.     added `server_chunk' config var to control minimum packet size sent between
  143.     servers.
  144.  
  145. 2001-01-26  drscholl  <drscholl@users.sourceforge.net>
  146.  
  147.     * login.c:
  148.     skipped already killed clients when looking to eject nonsharing users
  149.  
  150.     * whois.c:
  151.     whowas should require mod+ level, should have change which_server
  152.  
  153. 2001-01-24  drscholl  <drscholl@users.sourceforge.net>
  154.  
  155.     * main.c, userdb.c:
  156.     fixed buffer overrun in main.c when initializing the Poll[] and Clients[]
  157.     arrays
  158.  
  159. 2001-01-23  drscholl  <drscholl@users.sourceforge.net>
  160.  
  161.     * main.c:
  162.     fixed bug where opennap allocated 1 extra struct pollfd
  163.  
  164.     * buffer.c, class.c, handler.c, login.c, main.c, opennap.h, server_connect.c, server_usage.c:
  165.     removed dup2() and added a .id to the CONNECTION* struct.  use Poll[con->id]
  166.     instead of Poll[con->fd] since the fd's are no longer in order.
  167.  
  168.     * class.c, debug.h:
  169.     local var acc was never initialized in generic_acl_add()
  170.  
  171.     * class.c:
  172.     generic_acl_load should not assume the file is already sorted
  173.  
  174.     fixed generic_acl_del to handle masks correctly
  175.  
  176.     * class.c, main.c, opennap.h:
  177.     fixed broken class add routines
  178.  
  179. 2001-01-19  drscholl  <drscholl@users.sourceforge.net>
  180.  
  181.     * class.c:
  182.     don't print msg if we recv a class command with the same count
  183.  
  184.     * change.c, main.c, privmsg.c, whois.c:
  185.     don't allow admin to change elite password
  186.  
  187.     move `operserv server' to `nickserv server' and only require user+ level
  188.  
  189. 2001-01-16  drscholl  <drscholl@users.sourceforge.net>
  190.  
  191.     * FAQ, config.c, list_users.c, login.c, main.c, manual.html, opennap.h, server_connect.c:
  192.     added variable to turn off ghost kills in order to reduce cross server
  193.     traffic
  194.  
  195.     added auto_link boolean variable
  196.  
  197. 2001-01-09  drscholl  <drscholl@users.sourceforge.net>
  198.  
  199.     * class.c, opennap.h:
  200.     if any i:lines exist, don't allow a connection unless the ip matches an item
  201.     on the list.
  202.  
  203.     don't use mask when its 0xffffffff during a acl_sync()
  204.  
  205.     added prototypes for new acl functions
  206.  
  207.     * network.c, class.c:
  208.     fixed sorted insert in generic_acl_add()
  209.  
  210.     * class.c, network.c:
  211.     fixed coredump in generic_acl_del() with no host
  212.  
  213.     is_address() should use a mask of 0xffffffff when no mask is given
  214.  
  215.     sort ipmasks using compare_ipmask
  216.  
  217.     * class.c, handler.c, init.c, main.c, opennap.h, synch.c:
  218.     added support for e:lines, d:lines and i:lines
  219.  
  220.     added ability to delete connection class
  221.  
  222.     * class.c, handler.c, opennap.h:
  223.     added generic acl list handler functions
  224.  
  225.     * main.c: sigh.  more poll() checking
  226.  
  227.     * main.c, channel.c:
  228.     added more poll() debugging
  229.  
  230.     load_channels() did not close the fd for the channels file
  231.  
  232. 2001-01-08  drscholl  <drscholl@users.sourceforge.net>
  233.  
  234.     * list_users.c:
  235.     forgot to remove ntohl() from list_users.c.  ip and mask are already in
  236.     little endian format
  237.  
  238.     * class.c, list_users.c, network.c:
  239.     fixed is_address() to return little endian format
  240.  
  241.     * TODO, class.c, config.c, free_user.c, init.c, login.c, main.c, manual.html, opennap.h, whois.c:
  242.     added support for blocking clients that reconnect or register nicks too fast
  243.  
  244.     * list_users.c:
  245.     fixed potential segfault if the ip was missing in a list_users() command
  246.     with the `i' flag
  247.  
  248.     * class.c, list_users.c:
  249.     fixed list_users() to accept a mask
  250.  
  251.     class.c needs sys/types.h
  252.  
  253.     * configure, configure.in, hash.h, main.c, metaserver.c, network.c, opennap.h, server_links.c, channel.c:
  254.     added support for compining under Cygwin
  255.  
  256.     * TODO, add_file.c, class.c, opennap.h, search.c:
  257.     add support for prefixing search terms with a minus sign (`-') to indicate
  258.     words which should be excluded when matching.  this augments the FILENAME
  259.     EXCLUDES support which already exists
  260.  
  261.     * class.c:
  262.     notify_mods() message didn't have the mask displayed
  263.  
  264.     * class.c, configure, configure.in, handler.c, init.c, kill_user.c, list_users.c, login.c, main.c, network.c, opennap.h, util.c, Makefile.am, Makefile.in:
  265.     removed tcp-wrappers support.  it was messing up the newly rewritten
  266.     select/poll input handler, and it really isn't needed anymore.
  267.  
  268.     added colten edward's connection class patch (with cleanups)
  269.  
  270.     * TODO, browse.c, config.c, main.c, manual.html, opennap.h, server_connect.c:
  271.     added remote_browse config var to turn off remote browsing
  272.  
  273.     * opennap.h:
  274.     need extra level of parenthesis around the BSWAP macros
  275.  
  276. 2001-01-07  drscholl  <drscholl@users.sourceforge.net>
  277.  
  278.     * part.c, topic.c:
  279.     part() could send an error message to a remote server
  280.  
  281.     fixed part() and topic() to prefix error messages with the command that was
  282.     executed
  283.  
  284.     * server_connect.c:
  285.     don't use the server's external ip address when connecting a local server
  286.  
  287. 2001-01-06  drscholl  <drscholl@users.sourceforge.net>
  288.  
  289.     * add_file.c, browse.c, download.c, free_user.c, handler.c, join.c, login.c, main.c, network.c, opennap.h, server_connect.c, server_login.c, whois.c:
  290.     added even more debugging for poll() support
  291.  
  292.     use BSWAP32() in calls to my_ntoa()
  293.  
  294.     * FAQ, README, kill_user.c, main.c, manual.html, network.c, remove_connection.c, search.c, server_connect.c, server_login.c:
  295.     added fd numbers to the log() statements in add_client()
  296.  
  297.     updated FAQ
  298.  
  299.     cleanup fixes for failure modes in network.c
  300.  
  301.     updated manual with recently variable additions
  302.  
  303. 2001-01-05  drscholl  <drscholl@users.sourceforge.net>
  304.  
  305.     * buffer.c, change.c, main.c, opennap.h, search.c:
  306.     check for ENOBUFS after WRITE() to check for non-permanent error
  307.  
  308.     don't allow non-mods+ to nuke another users
  309.  
  310.     call expire_searches() directly from the main loop rather than from a timer
  311.     to prevent searches from backing up too much
  312.  
  313.     * README, buffer.c, main.c, opennap.h, search.c, server_usage.c, timer.c:
  314.     store pending remote search requests in a fifo order, with a pointer to the
  315.     tail for fast appends.
  316.  
  317.     added # of pending searches to the server stats reply
  318.  
  319.     added timer_set_interval() to allow modifying the interval at which existing
  320.     events are rescheduled
  321.  
  322.     add_timer() now returns the reference number of the created timer
  323.  
  324.     allocate timer refnums in strictly ascending order
  325.  
  326.     reworked send_queued_data() to write() until there is no more data queued,
  327.     or until the socket's buffer is full.  also, for server links we want to
  328.     always make sure there is at least 16k of compressed output available in
  329.     order to keep the socket's output buffer full, and avoid unnecessary trips
  330.     through the main loop.
  331.  
  332. 2001-01-04  drscholl  <drscholl@users.sourceforge.net>
  333.  
  334.     * main.c, remove_connection.c, search.c:
  335.     fixed consistency checks for Clients[] and Poll[] arrays
  336.  
  337.     test for searches <= 0 in search() was incorrect.  a 0 value is perfectly
  338.     valid (no searches yet).
  339.  
  340.     * buffer.c, handler.c, main.c, network.c, opennap.h, search.c, server_connect.c:
  341.     change set_read and set_write to macros
  342.  
  343.     rewrote add_client to include common code from accept_connection() and
  344.     try_connect()
  345.  
  346.     added extensive checking in add_client and reap_dead_connnection to ensure
  347.     that the Clients[] and Poll[] arrays look correct
  348.  
  349.     * main.c, search.c:
  350.     fixed bug in generate_request.  need to check for type == -1 (ANY)
  351.  
  352.     fixed typo in main.c
  353.  
  354. 2001-01-02  drscholl  <drscholl@users.sourceforge.net>
  355.  
  356.     * COPYING, INSTALL, Makefile.in, aclocal.m4, configure, install-sh, main.c, missing, mkinstalldirs, opennap.h:
  357.     need to include files so that autoconf is not require to build from cvs
  358.  
  359.     * README, aclocal.m4, handler.c, main.c, opennap.h:
  360.     added q's server numeric histogram patch
  361.  
  362.     removed aclocal.m4 from CVS repository -- generated by autogen.sh
  363.  
  364.     * configure:
  365.     forgot to remove configure script -- now generated by autogen.sh
  366.  
  367.     * COPYING, INSTALL, Makefile.in, autogen.sh, install-sh, missing, mkinstalldirs:
  368.     use autogen.sh to rebuild the CVS sources
  369.  
  370. 2001-01-01  drscholl  <drscholl@users.sourceforge.net>
  371.  
  372.     * server_connect.c, main.c:
  373.     reorder operations in main event loop so that reap_connections() is called
  374.     last.
  375.  
  376. 2000-12-31  drscholl  <drscholl@users.sourceforge.net>
  377.  
  378.     * browse.c, handler.c:
  379.     disable 10301 command
  380.  
  381.     * buffer.c, init.c, main.c:
  382.     fixed obscure bug where the destroy list was not properly updated
  383.  
  384.     * config.c, init.c, main.c, search.c, server_connect.c:
  385.     zero out unused Poll[] structs
  386.  
  387.     * main.c, server_usage.c:
  388.     need to cast double to int
  389.  
  390.     * server_usage.c, main.c:
  391.     remove (int) casts where they aren't needed
  392.  
  393.     * main.c, opennap.h, privmsg.c, remove_connection.c, resume.c, search.c, server_connect.c, server_links.c, server_usage.c, serverlib.c, setup.c, upload_complete.c, userdb.c, usermode.c, util.c, whois.c, announce.c, ban.c, browse.c, channel.c, config.c, debug.c, download.c, filter.c, free_user.c, handler.c, init.c, join.c, kick.c, kill_user.c, level.c, login.c:
  394.     use %d instead of %f in places where it doesn't matter
  395.  
  396.     fixed indentation
  397.  
  398.     removed .last_browse member of USER
  399.  
  400.     remove all reference to fast_snprintf
  401.  
  402. 2000-12-30  drscholl  <drscholl@users.sourceforge.net>
  403.  
  404.     * Makefile.am, Makefile.in, handler.c, main.c, opennap.h, server_links.c, server_usage.c:
  405.     removed fast_snprintf
  406.  
  407.     * fast_snprintf.c:
  408.     fixed fast_snprintf() to use va_arg correctly
  409.  
  410.     * fast_snprintf.c, login.c, main.c:
  411.     fast_snprintf should bail out if the size of the output buffer is 0
  412.  
  413. 2000-12-29  drscholl  <drscholl@users.sourceforge.net>
  414.  
  415.     * fast_snprintf.c, main.c:
  416.     use DIGIT() for %u and %d since its faster than ignoring leading 0s anyway
  417.  
  418.     * configure, configure.in, main.c, napster.txt:
  419.     handle poll() errors to differentiate error type
  420.  
  421.     * ban.c, fast_snprintf.c:
  422.     remove support for %ld.  change one occurance to %u in ban.c
  423.  
  424.     * fast_snprintf.c:
  425.     handle negative numbers for %d in fast_snprintf
  426.  
  427.     * handler.c:
  428.     changed server flood protection to automatically flood control all commands
  429.     except for those marked F_EXEMPT
  430.  
  431.     * fast_snprintf.c, motd.c:
  432.     use double for %f conversion in fast_snprintf
  433.  
  434. 2000-12-28  drscholl  <drscholl@users.sourceforge.net>
  435.  
  436.     * download.c, napster.txt, search.c:
  437.     consider 8-bit chars to be in WORD_CHAR() class so that foreign users can
  438.     use opennap.
  439.  
  440.     updated napster.txt with recent news
  441.  
  442.     numeric 607 now has the requestor's linespeed as the last parameter in the
  443.     message, to be consistent with napster.com servers
  444.  
  445. 2000-12-27  drscholl  <drscholl@users.sourceforge.net>
  446.  
  447.     * fast_snprintf.c:
  448.     added fallback mode for %d so large ints can be handled gracefully
  449.  
  450.     * add_file.c, ban.c, buffer.c, change.c, channel.c, config.c, download.c, filter.c, join.c, kick.c, login.c, motd.c, privmsg.c, resume.c, server_connect.c, server_links.c, server_login.c, server_usage.c, synch.c, upload_complete.c, userdb.c, whois.c:
  451.     need to use %u instead of %d for large integers
  452.  
  453.     * list_users.c: need to clear ON_GFLAG_CHANNEL
  454.  
  455.     * list_users.c:
  456.     fixed list_users() to accept multiple flags (q)
  457.  
  458.     * main.c, fast_snprintf.c:
  459.     fixed compilation warnings in fast_snprintf.c
  460.  
  461.     fixed server_input() to work with select() based systems
  462.  
  463.     * config.c, list.c, list.h, main.c:
  464.     added additional arg to list callback functions
  465.  
  466.     pre-read server links in the main event loop in attempt to avoid going
  467.     through the main loop when there is heavy server->server traffic
  468.  
  469.     * config.c, init.c, level.c, list_users.c, login.c, main.c, opennap.h, remove_connection.c, usermode.c, browse.c:
  470.     commited q's last_browse patch to prevent a client from browsing the same
  471.     client twice for flood-control
  472.  
  473.     commited q's list_users patch for exteneded functionality: -C #<channel>
  474.     for listing users in a single channel and -u for only listing LEVEL_USER
  475.     clients.
  476.  
  477.     * browse.c, fast_snprintf.c, search.c:
  478.     use same case for %d as %hu
  479.  
  480.     use %u for file sizes since %d can only handle 0..99,999
  481.  
  482.     * Makefile.am, Makefile.in, add_file.c, ban.c, channel.c, config.c, fast_snprintf.c, filter.c, free_user.c, handler.c, init.c, kill_user.c, login.c, main.c, opennap.h, remove_file.c, search.c, server_connect.c, server_links.c, server_usage.c, serverlib.c, userdb.c, usermode.c, util.c, whois.c:
  483.     added optimized snprintf() routine
  484.  
  485.     * browse.c:
  486.     server should always return 640 in response to a 640
  487.  
  488. 2000-12-26  drscholl  <drscholl@users.sourceforge.net>
  489.  
  490.     * browse.c:
  491.     browse_direct should check user->shared instead of user->sharing
  492.  
  493. 2000-12-25  drscholl  <drscholl@users.sourceforge.net>
  494.  
  495.     * proxy-client.c: saved new client proxy code.
  496.  
  497.     * add_file.c, buffer.c, init.c, main.c:
  498.     need to zero the pollfd structs for fds 0, 1, 2
  499.  
  500.     unshare (110) should return the number of files unshared
  501.  
  502.     * browse.c, buffer.c, handler.c, main.c, napster.txt, server_connect.c:
  503.     fixed commands for new browse support.
  504.  
  505.     added support for firewalled browse request
  506.  
  507. 2000-12-23  drscholl  <drscholl@users.sourceforge.net>
  508.  
  509.     * login.c:
  510.     added debug info for logging unknown commands
  511.  
  512.     * handler.c, napster.txt:
  513.     server should ignore the 920 command and not bomb out on it
  514.  
  515.     * browse.c, handler.c, napster.txt, opennap.h:
  516.     added support for the new direct client browsing commands in napster beta8
  517.  
  518. 2000-12-19  drscholl  <drscholl@users.sourceforge.net>
  519.  
  520.     * main.c, server_connect.c:
  521.     old fd must be closed after dup2
  522.  
  523.     * main.c:
  524.     not all connection ports were listened on
  525.  
  526.     * main.c:
  527.     handle new connections after main i/o loop so that new entries in poll() are
  528.     not consulted
  529.  
  530.     * main.c, opennap.h, server_connect.c:
  531.     fixed broken poll() implementation.  pollfd structs were not properly
  532.     initialized
  533.  
  534.     * main.c:
  535.     use getsockopt() to fetch the error code for the poll() error
  536.  
  537.     * search.c, server_connect.c:
  538.     fixed core in server_disconnect
  539.  
  540.     fixed off by one error in max search results
  541.  
  542. 2000-12-18  drscholl  <drscholl@users.sourceforge.net>
  543.  
  544.     * main.c: removed msg about swapping fds
  545.  
  546.     * Makefile.am, Makefile.in, announce.c, buffer.c, configure, configure.in, handler.c, init.c, libpoll.c, libpoll.h, login.c, main.c, opennap.h, remove_connection.c, server_connect.c, serverlib.c:
  547.     removed libpoll and coded direct array access using fd as the index.
  548.  
  549. 2000-12-12  drscholl  <drscholl@users.sourceforge.net>
  550.  
  551.     * ChangeLog: post 0.38 commit
  552.  
  553.     * ChangeLog, NEWS, README, hash.h, kill_user.c, libpoll.c, libpoll.h, opennap.dsp, opennap.opt:
  554.     fixes to compile under Win32 again.
  555.  
  556. 2000-12-12  drscholl  <drscholl@users.sourceforge.net>
  557.  
  558.     * ChangeLog, NEWS, README, hash.h, kill_user.c, libpoll.c, libpoll.h, opennap.dsp, opennap.opt:
  559.     fixes to compile under Win32 again.
  560.  
  561. 2000-12-08  drscholl  <drscholl@users.sourceforge.net>
  562.  
  563.     * ChangeLog, kill_user.c:
  564.     bsd need sys/types.h before sys/socket.h
  565.  
  566. 2000-12-07  drscholl  <drscholl@users.sourceforge.net>
  567.  
  568.     * kill_user.c, opennap.h, handler.c, README:
  569.     added q's mass kill by ip command
  570.  
  571. 2000-12-05  drscholl  <drscholl@users.sourceforge.net>
  572.  
  573.     * server_connect.c:
  574.     fixed core in server_disconnect
  575.  
  576.     * add_file.c, kill_user.c, level.c, login.c, main.c, manual.html, network.c, opennap.h, remove_connection.c, util.c, whois.c, ChangeLog:
  577.     locally connected mods+ are now kept in the Mods global list, to make
  578.     notify_mods() more efficient.
  579.  
  580.     fixed buffer overrun bug in strfcpy
  581.  
  582.     whois checked the wrong CONNECTION* to determine whether the target of the
  583.     whois request is local
  584.  
  585. 2000-12-04  drscholl  <drscholl@users.sourceforge.net>
  586.  
  587.     * buffer.c, channel.c, configure, configure.in, free_user.c, handler.c, init.c, join.c, kick.c, main.c, opennap.h, part.c, part_channel.c, public.c, synch.c, topic.c, usermode.c, util.c, whois.c:
  588.     added local channels (not synched across linked servers)
  589.  
  590.     added --enable-log-channel which sends the console output to channel &LOG
  591.     in addition to printing on the terminal
  592.  
  593.     fixed usermode -whois
  594.  
  595.     client version string is returned with who-was reply
  596.  
  597. 2000-12-03  drscholl  <drscholl@users.sourceforge.net>
  598.  
  599.     * README, handler.c, opennap.h, usermode.c, whois.c:
  600.     use separate numeric for remote whois notification so that the whois message
  601.     can be turned off with usermode -whois
  602.  
  603.     * main.c, manual.html, muzzle.c, opennap.h, privmsg.c, server_login.c, server_usage.c, usermode.c, channel.c, configure, configure.in, free_user.c, handler.c, init.c, level.c, list_channels.c, login.c:
  604.     added usermode -msg to allow a user to turn off private msgs
  605.  
  606.     added a nickserv usermode command for use by non-mod users
  607.  
  608.     cloaked users should not be counted in channel user counts
  609.  
  610.     don't allow non-mod users to change their own level
  611.  
  612.     use a hashlist to store client version strings for memory savings
  613.  
  614. 2000-12-02  drscholl  <drscholl@users.sourceforge.net>
  615.  
  616.     * add_file.c, free_user.c:
  617.     Local file count was not updated when a local user unshared all files
  618.  
  619. 2000-11-30  drscholl  <drscholl@users.sourceforge.net>
  620.  
  621.     * main.c:
  622.     wrong errno was used in handle_io.  should use the result of getsockopt()
  623.     instead of errno in the log message
  624.  
  625. 2000-11-29  drscholl  <drscholl@users.sourceforge.net>
  626.  
  627.     * ChangeLog, NEWS, TODO, config.c, main.c, opennap.h, search.c:
  628.     updated ChangeLog
  629.  
  630.     added `max_searches' configuration variable to cap the number of pending
  631.     search requests each client is allowed
  632.  
  633.     * README, handler.c, login.c, opennap.h, remove_connection.c, server_connect.c, server_links.c, server_login.c, synch.c:
  634.     reworked server link info messages.
  635.  
  636.     use server_error to handle message 0
  637.  
  638.     server_quit is now deprecated.  use server_disconnect for both manual and
  639.     detected splits
  640.  
  641. 2000-11-28  drscholl  <drscholl@users.sourceforge.net>
  642.  
  643.     * TODO, hashlist.c, hashlist.h:
  644.     fixed bug with hotlist.  when `data' is specified for the hashlist_remove,
  645.     don't decrement the `count' if the `data' is not found on the list.
  646.  
  647.     * hashlist.c, hotlist.c, main.c:
  648.     added more debugging to catch the hotlist bug
  649.  
  650. 2000-11-25  drscholl  <drscholl@users.sourceforge.net>
  651.  
  652.     * hashlist.c, hotlist.c:
  653.     added debugging to help find the hotlist bug
  654.  
  655. 2000-11-23  drscholl  <drscholl@users.sourceforge.net>
  656.  
  657.     * ChangeLog, whois.c:
  658.     updated ChangeLog
  659.  
  660.     nick should be returned when whois has no info for the requested nick
  661.  
  662. 2000-11-22  drscholl  <drscholl@users.sourceforge.net>
  663.  
  664.     * Makefile.in, userdb.c:
  665.     patchnap no longer needs to be included in the source distribution
  666.  
  667.     fixed indentation in userdb.c
  668.  
  669.     * search.c:
  670.     keep track of search count when in routing-only mode
  671.  
  672.     * hashlist.c:
  673.     don't assert when the list count is >0 but list==NULL
  674.  
  675.     * configure.in, configure:
  676.     configure script was incorrect
  677.  
  678.     * opennap.h, search.c, serverlib.c, TODO, add_file.c, configure.in, free_user.c, kill_user.c, libpoll.c, login.c:
  679.     updated TODO file
  680.  
  681.     fixed indentation on a few files
  682.  
  683.     removed debug statement from libpoll.c
  684.  
  685.     added --disable-kqueue to configure
  686.  
  687. 2000-11-21  drscholl  <drscholl@users.sourceforge.net>
  688.  
  689.     * browse.c:
  690.     fixed browse/browse_new to not return the client's ip address if no files
  691.     are shared.
  692.  
  693.     * hashlist.c, remove_connection.c:
  694.     fixed bug in hashlist_remove which caused the haslist to always be freed
  695.     even when other entries exist
  696.  
  697.     * browse.c, filter.c, free_user.c, hashlist.c, hashlist.h, hotlist.c, login.c, napster.txt, opennap.h, remove_connection.c, remove_file.c, serverlib.c:
  698.     fixed new_browse to allow browsing across a routing-only server
  699.  
  700.     fixed some bugs in the new hotlist/hashlist code
  701.  
  702. 2000-11-16  drscholl  <drscholl@users.sourceforge.net>
  703.  
  704.     * Makefile.am, Makefile.in, NEWS, free_user.c, handler.c, hash.c, hash.h, hashlist.c, hashlist.h, hotlist.c, init.c, login.c, main.c, opennap.h, patchnap.c, remove_connection.c, server_usage.c, serverlib.c:
  705.     patchnap is no longer needed since nap is now Free Software
  706.  
  707.     max_clones is now global instead of per-server
  708.  
  709.     added general purpose hash+list routines
  710.  
  711.     numeric 10013 is no longer needed, removed from handler table
  712.  
  713.     hash table functions updated to provide support for any type of key, not
  714.     just a string
  715.  
  716. 2000-11-15  drscholl  <drscholl@users.sourceforge.net>
  717.  
  718.     * ChangeLog, README, browse.c, main.c, napster.txt, opennap.h, privmsg.c:
  719.     updated ChangeLog with recent entries
  720.  
  721.     the ip address of the client is now returned with the end-browse-list
  722.     numeric, per the official servers
  723.  
  724.     added redirect and cycle to operserv
  725.  
  726. 2000-11-12  drscholl  <drscholl@users.sourceforge.net>
  727.  
  728.     * add_file.c:
  729.     fixed segfault in fdb_add when memory is exhausted
  730.  
  731. 2000-11-10  drscholl  <drscholl@users.sourceforge.net>
  732.  
  733.     * browse.c, main.c, opennap.h:
  734.     --enable-version-stats did not work with --enable-router
  735.  
  736. 2000-11-06  drscholl  <drscholl@users.sourceforge.net>
  737.  
  738.     * client_quit.c, sample.conf:
  739.     fixed bug in client_quit where it was testing for local users rather than
  740.     remote users
  741.  
  742. 2000-11-03  drscholl  <drscholl@users.sourceforge.net>
  743.  
  744.     * login.c:
  745.     added check for missing param in check_password()
  746.  
  747.     * libpoll.c, libpoll.h, server_login.c:
  748.     allow max_time_delta and warn_time_delta to be 0 to disable the clock sync
  749.     check.
  750.  
  751.     fixed bug when using select() which causes a segfault
  752.  
  753. 2000-11-02  drscholl  <drscholl@users.sourceforge.net>
  754.  
  755.     * .indent.pro, NEWS, README, client_quit.c, config.c, configure, configure.in, free_user.c, handler.c, init.c, main.c, manual.html, opennap.h, whois.c:
  756.     added who-was support
  757.  
  758. 2000-10-31  drscholl  <drscholl@users.sourceforge.net>
  759.  
  760.     * ChangeLog, TODO, config.c, join.c, opennap.h:
  761.     added option boolean `irc_channels' to control whether to enforce channel
  762.     names must begin with # or &.  set by default to behave the same as previous
  763.     versions.
  764.  
  765. 2000-10-30  drscholl  <drscholl@users.sourceforge.net>
  766.  
  767.     * ChangeLog, NEWS, README, init.c, main.c, opennap.dsp, opennap.dsw, opennap.opt, server_links.c:
  768.     pre 0.37 release commit
  769.  
  770.     * sample.conf, whois.c:
  771.     whois should use next_arg() to trim whitespaces
  772.  
  773.     fixed whois to use the same message as the official server when the target
  774.     nickname is not online or registered
  775.  
  776. 2000-10-27  drscholl  <drscholl@users.sourceforge.net>
  777.  
  778.     * privmsg.c:
  779.     added `nuke' to the list of operserv commands
  780.  
  781. 2000-10-25  drscholl  <drscholl@users.sourceforge.net>
  782.  
  783.     * server_connect.c, util.c:
  784.     fixed broken remote server connect
  785.  
  786.     * handler.c, join.c, login.c, opennap.h:
  787.     added stub function ignore_command to silently handle numerics that we
  788.     ignore
  789.  
  790.     * .indent.pro, libpoll.c, main.c:
  791.     reverted indentation style
  792.  
  793.     Login_Timeout support was never readded after changing over to use libpoll.c
  794.  
  795. 2000-10-17  drscholl  <drscholl@users.sourceforge.net>
  796.  
  797.     * login.c:
  798.     fixed eject_client not too boot mods+ and to eject leeches before users.
  799.  
  800.     * download.c, login.c:
  801.     upload_request() used the wrong offsets into av[]
  802.  
  803.     * main.c:
  804.     prevent segfault when no context for a fd is passed into handle_io()
  805.  
  806.     * level.c:
  807.     fixed level() to ensure that the sender's level is mod+ in the case where
  808.     the local server has no record of the target user.
  809.  
  810.     * .indent.pro, download.c:
  811.     reverted indent style to original
  812.  
  813.     fixed bug which caused a download to fail between client 2 server hops away
  814.  
  815.     * privmsg.c:
  816.     fixed server crash when nickserv is called with no args
  817.  
  818.     * muzzle.c, synch.c:
  819.     don't pass a muzzle command if a local user is not a mod+
  820.  
  821. 2000-10-04  drscholl  <drscholl@users.sourceforge.net>
  822.  
  823.     * browse.c:
  824.     fixed bug in browse when a user is logged into a server compiled as
  825.     a router.
  826.  
  827. 2000-10-03  drscholl  <drscholl@users.sourceforge.net>
  828.  
  829.     * change.c, topic.c:
  830.     fixed bug in nuke.  the error message when permission is denied tried to
  831.     send the message back to the (possibly nonexistent) user that was nuked.
  832.  
  833.     fixed bug in topic when the channel name was not present
  834.  
  835. 2000-09-22  drscholl  <drscholl@users.sourceforge.net>
  836.  
  837.     * browse.c:
  838.     fixed core in browse() when no nick is given
  839.  
  840.     * server_connect.c, channel.c, main.c:
  841.     added more log info when channel_op needs to resync a server
  842.  
  843. 2000-09-21  drscholl  <drscholl@users.sourceforge.net>
  844.  
  845.     * util.c:
  846.     next_arg() should return null when an empty string is passed in
  847.  
  848.     * change.c:
  849.     fixed bug in cloak which cause it not to allow any user to cloak
  850.  
  851. 2000-09-20  drscholl  <drscholl@users.sourceforge.net>
  852.  
  853.     * serverlib.c:
  854.     pop_user_server() printed the value of the pointer instead of the nickname
  855.     when an error occurred.
  856.  
  857.     * main.c:
  858.     destroy_connection had wrong test for con->destroy
  859.  
  860.     * main.c:
  861.     allow destroy_connection() to handle the case where the connection is marked
  862.     as destroyed but not placed on the Destroy list
  863.  
  864. 2000-09-19  drscholl  <drscholl@users.sourceforge.net>
  865.  
  866.     * change.c, free_user.c, level.c, login.c, muzzle.c, opennap.h, userdb.c:
  867.     rewrote muzzle to be more clear
  868.  
  869.     server no longer saves cloak state when a mod+ logs out.  was casusing too
  870.     many server desyncs.
  871.  
  872.     * change.c, join.c:
  873.     server generated kicks on desync now state why the user was kicked
  874.  
  875.     fixed bad send_user() call in nuke()
  876.  
  877.     * change.c:
  878.     always propogate a nuke command if the account is not locally registered
  879.     and the user is not logged in since other servers might have a db entry for
  880.     it.
  881.  
  882.     * login.c, synch.c:
  883.     removed ts from level commands
  884.  
  885.     * channel.c:
  886.     fixed crash in channel_wallop() when the wallop was sent by a server
  887.  
  888.     * main.c:
  889.     catch memory alloc fail in destroy_connection()
  890.  
  891.     * main.c:
  892.     added print out of number of fds in the Poll_Context in update_stats() for
  893.     systems with poll() just to verify libpoll is not losing fds
  894.  
  895.     * free_user.c, kill_user.c, remove_connection.c:
  896.     set the memory used by USER and CONNECTION structs to 0xff before free'g
  897.     to catch bad refs
  898.  
  899.     .killed should be set prior to calling destroy_connection
  900.  
  901. 2000-09-18  drscholl  <drscholl@users.sourceforge.net>
  902.  
  903.     * login.c:
  904.     last seen time is not necessary to sync up the user db
  905.  
  906.     * change.c, level.c:
  907.     cloak() should send the absolute state when relaying to peer servers
  908.  
  909.     allow a user to nuke their own account.  nuke now tells the user that their
  910.     account was nuked if they are logged in at the moment.
  911.  
  912.     * level.c:
  913.     fixed possible desync when the received server message was malformed
  914.  
  915.     * motd.c:
  916.     motd now displays the name of the server you are connected to
  917.  
  918.     * change.c, level.c, login.c, opennap.h, privmsg.c, synch.c, userdb.c:
  919.     reverted ts changes in level.c.
  920.  
  921.     changed .timestamp to .created for USERDB struct.  once set it should not
  922.     be modified unless a collision has occured.
  923.  
  924. 2000-09-16  drscholl  <drscholl@users.sourceforge.net>
  925.  
  926.     * main.c:
  927.     update_stats() now prints the time at which the server was started
  928.  
  929.     * level.c, ChangeLog:
  930.     fixed bug in timestamp code for level().  the oldest change should be
  931.     dropped, not the newest.
  932.  
  933.     level() will now correct for server desync when it detects that a remote
  934.     user has no privilege to execute the change.
  935.  
  936.     updated ChangeLog with recent CVS entries.
  937.  
  938. 2000-09-15  drscholl  <drscholl@users.sourceforge.net>
  939.  
  940.     * search.c:
  941.     fixed find_search to print a single dot (.) for each exipred request instead
  942.     of a line for each request. the id strings are not really important info
  943.  
  944.     * opennap.h, init.c, main.c:
  945.     setting the Server_Ip and Interface was still broken with the new
  946.     server_alias config var
  947.  
  948.     * manual.html, opennap.h, sample.conf, server_connect.c, init.c, main.c, config.c:
  949.     added `server_alias' variable to use when the server should be aliased
  950.  
  951.     prevent certains vars from being reset after the server first loads the
  952.     config file
  953.  
  954. 2000-09-14  drscholl  <drscholl@users.sourceforge.net>
  955.  
  956.     * manual.html, server_links.c:
  957.     empty, or lines that start with a whitspace char are now ignored in the
  958.     servers file
  959.  
  960.     * init.c, level.c, libpoll.c, libpoll.h, main.c:
  961.     fixed compilation errors with -DROUTING_ONLY=1
  962.  
  963. 2000-09-13  drscholl  <drscholl@users.sourceforge.net>
  964.  
  965.     * main.c:
  966.     use getsockopt() to fetch the reason error was returned from poll/select
  967.  
  968.     * main.c, remove_connection.c:
  969.     when not in debug mode, write 0xff bytes to the free'd connection structs
  970.  
  971.     add check in handle_io() to ensure the fd matches the fd in the connection
  972.     struct passed back
  973.  
  974.     * buffer.c, main.c:
  975.     added fd # to log message when a socket error occurs
  976.  
  977.     send_queued_data() should error if you try to send to a destroyed connection
  978.  
  979.     * handler.c, libpoll.c, login.c:
  980.     collapse POLLNVAL/POLLHUP/POLLERR check into a single if statement
  981.  
  982.     udpated flood protection
  983.  
  984. 2000-09-12  drscholl  <drscholl@users.sourceforge.net>
  985.  
  986.     * server_connect.c:
  987.     fixed bug in killserver where you could not kill the server you are
  988.     connected to
  989.  
  990.     * server_connect.c:
  991.     server_disconnect disconnected the user issuing the disconnect, not the
  992.     server
  993.  
  994.     * channel.c, kill_user.c, login.c, muzzle.c:
  995.     fixed kill_user() to use pop_user_server()
  996.  
  997.     fixed bug in channel_op() where the "Server " prefix was the only thing sent
  998.  
  999.     * login.c:
  1000.     fixed login() so that it only sends a KILL back to the server where the
  1001.     login request came from when an error is detected.  its not necessary to
  1002.     pass this message to all peer servers.
  1003.  
  1004.     * libpoll.c, libpoll.h, main.c:
  1005.     lp_dispatch now returns LP_ERROR when an error condition on the socket has
  1006.     been detected (hangup, error, invalid)
  1007.  
  1008.     * libpoll.c:
  1009.     added checking for other POLL* bits
  1010.  
  1011.     * libpoll.c:
  1012.     warn when bits other than POLLIN/POLLOUT are set in .revents
  1013.  
  1014.     * libpoll.c, libpoll.h, main.c:
  1015.     make libpoll a little cleaner when using poll() by first assignin a local
  1016.     var `pfd' to the struct pollfd entry
  1017.  
  1018.     * libpoll.c:
  1019.     lp_clear() should unset the current state of the fds from the last
  1020.     poll/select so that the next lp_dispatch() will not invoke the callback
  1021.     routine for that fd
  1022.  
  1023.     * join.c:
  1024.     when a user gains chanops by joining a new channel, the msg was not prefixed
  1025.     with "Server"
  1026.  
  1027.     * ban.c, channel.c, config.c, kick.c, kill_user.c, level.c, libpoll.c, muzzle.c, opennap.h, privmsg.c, server_links.c, server_login.c:
  1028.     fixed libpoll finally
  1029.  
  1030.     prefix Server to all actions preformed by servers in notify_ops/notify_mods
  1031.     calls
  1032.  
  1033.     * config.c, libpoll.c:
  1034.     more verbose error message when select() fails
  1035.  
  1036.     * init.c, libpoll.c:
  1037.     print warning when sigpipe is caught
  1038.  
  1039.     * libpoll.c:
  1040.     fixed copile error for select() based systems
  1041.  
  1042.     * buffer.c, libpoll.c, libpoll.h:
  1043.     more libpoll debugging
  1044.  
  1045.     * libpoll.c:
  1046.     fixed compile error on systems with only select()
  1047.  
  1048.     * part_channel.c, libpoll.c, main.c:
  1049.     dont call list_delete() on chan->invited when null
  1050.  
  1051.     more libpoll debugging
  1052.  
  1053.     * join.c, libpoll.c:
  1054.     added more libpoll debug statements
  1055.  
  1056.     dont call list_delete() on chan->invited when its null
  1057.  
  1058.     * libpoll.c:
  1059.     added additional libpoll debugging
  1060.  
  1061.     * join.c, libpoll.c:
  1062.     added missing set of .magic for channels
  1063.  
  1064.     changed realloc to REALLOC() in libpoll
  1065.  
  1066.     * libpoll.c:
  1067.     added debugging support for libpoll
  1068.  
  1069.     * main.c:
  1070.     dont clear the fd in report_stats().  its the listen fd, not the client's fd
  1071.  
  1072.     * libpoll.c, libpoll.h, change.c:
  1073.     memset() the pollfd struct when moving it to fill holes
  1074.  
  1075.     * change.c, main.c:
  1076.     reason when altering another users password should be optional
  1077.  
  1078.     * main.c:
  1079.     stats port fd was not cleared when closing it
  1080.  
  1081. 2000-09-11  drscholl  <drscholl@users.sourceforge.net>
  1082.  
  1083.     * init.c:
  1084.     fixed bug with umask where it should have use 077 instead of 0777
  1085.  
  1086.     * libpoll.c:
  1087.     when moving the last element of the poll_fd[] array to fill holes, we need
  1088.     to update the .pollfd_offset of the corresponding lp_fd_ctx
  1089.  
  1090.     * libpoll.c, libpoll.h, server_connect.c:
  1091.     need to keep int offset into .poll_fd[] array since it can be realloc'd
  1092.  
  1093.     * init.c, libpoll.c, napster.txt:
  1094.     make hash table buckets a prime (1027)
  1095.  
  1096.     updated napster.txt with new 110 message
  1097.  
  1098.     * login.c, main.c, opennap.h, privmsg.c, search.c, server_usage.c, add_file.c, config.c, handler.c, init.c, kill_user.c, libpoll.c:
  1099.     changed bytes in/out counters to double
  1100.  
  1101.     prevent clients from using the alias names of servers
  1102.  
  1103.     fixed bug in issuing remote searches where the generated id was not sent
  1104.     when searches originated at the local server
  1105.  
  1106.     libpoll.c needed <string.h>
  1107.  
  1108.     * handler.c, login.c, main.c, opennap.h:
  1109.     changed unsigned to u_ defs
  1110.  
  1111.     * aclocal.m4, configure, main.c, Makefile.in:
  1112.     rewrote main to use list_free() and list_foreach().
  1113.  
  1114.     reduce timeout for lp_poll() when there are clients on the flood list
  1115.  
  1116.     * main.c:
  1117.     Destroy list was not NULL'd when delete all items in the list
  1118.  
  1119.     * main.c:
  1120.     added debug check of connection struct in Destroy list
  1121.  
  1122.     * Makefile.in, aclocal.m4, configure, configure.in:
  1123.     check for poll() and kqueue()
  1124.  
  1125.     * libpoll.c, libpoll.h:
  1126.     forgot to commit new libpoll files
  1127.  
  1128.     * Makefile.am, Makefile.in, add_file.c, ban.c, buffer.c, config.c, free_user.c, handler.c, init.c, kill_user.c, login.c, main.c, opennap.h, privmsg.c, remove_file.c, server_connect.c, server_login.c, serverlib.c, .indent.pro:
  1129.     incorporated new libpoll library into main branch
  1130.  
  1131.     added extensive checking to prevent negative total library size bug
  1132.  
  1133.     changed indent style for a few files with new .indent.pro
  1134.  
  1135. 2000-09-08  drscholl  <drscholl@users.sourceforge.net>
  1136.  
  1137.     * login.c, privmsg.c, server_connect.c:
  1138.     fixed bug in server_connect() where auth->alias was used without being
  1139.     checked for NULL
  1140.  
  1141.     added "register" command to NickServ to allow a user to register their own
  1142.     nick if not previously done.
  1143.  
  1144.     modified register_user() to allow for servers registering user accounts
  1145.     (needed for /m NickServ register)
  1146.  
  1147.     * TODO, init.c, list.c, list.h, server_links.c:
  1148.     added signal handler to catch sigsegv and wipe the user/server passwords
  1149.     from memory before dumping core when not in debug mode
  1150.  
  1151.     * ChangeLog, README:
  1152.     updated ChangeLog with recent entries
  1153.  
  1154.     updated README on server connect to what this version supports
  1155.  
  1156.     * server_connect.c:
  1157.     removed <port> arg from server connect command.  servers will need to be
  1158.     upgraded to interoperate with this version anyway.
  1159.  
  1160.     * sample.servers, search.c, server_connect.c, server_links.c, server_login.c, NEWS, README, add_file.c, browse.c, config.c, configure, configure.in, filter.c, free_user.c, handler.c, init.c, login.c, main.c, manual.html, opennap.h, remove_file.c:
  1161.     committed routing-only server patch enabled via --enable-routing
  1162.  
  1163. 2000-09-07  drscholl  <drscholl@users.sourceforge.net>
  1164.  
  1165.     * libpoll.c, libpoll.h:
  1166.     New file.
  1167.  
  1168.     * configure, configure.in, handler.c, libpoll.c, libpoll.h, main.c, opennap.h, server_connect.c, serverlib.c, Makefile.am, Makefile.in, buffer.c:
  1169.     initial import of the libpoll patch to support select/poll and simplify
  1170.     the main event loop
  1171.  
  1172. 2000-09-06  drscholl  <drscholl@users.sourceforge.net>
  1173.  
  1174.     * channel.c, napster.txt, opennap.h, util.c:
  1175.     sync_channel_bans() used the server ban numeric instead of the channel ban
  1176.     numeric
  1177.  
  1178.     added a few missing hex codes to napster.txt
  1179.  
  1180. 2000-09-05  drscholl  <drscholl@users.sourceforge.net>
  1181.  
  1182.     * README, handler.c, opennap.h, server_links.c:
  1183.     added ping_all_servers() command (10120) to trigger the lag detection
  1184.  
  1185.     * ChangeLog, NEWS, init.c, join.c, main.c, opennap.h, sample.servers, server_login.c:
  1186.     more security fixes.  don't allow config file or ports to be specified on
  1187.     the command line when running as root to prevent local users on the system
  1188.     from attempting to exploit it.
  1189.  
  1190. 2000-09-04  drscholl  <drscholl@users.sourceforge.net>
  1191.  
  1192.     * join.c:
  1193.     fixed bug in join() where cross-server joins were always considere desynced
  1194.  
  1195.     * server_login.c:
  1196.     fixed bad format in time_check()
  1197.  
  1198.     * kick.c:
  1199.     fixed bug in kick() where it could not handle kicks generated by a peer
  1200.     server
  1201.  
  1202. 2000-09-03  drscholl  <drscholl@users.sourceforge.net>
  1203.  
  1204.     * sample.conf:
  1205.     removed outdated variables from sample.conf
  1206.  
  1207.     * config.c, configure, configure.in, init.c, main.c, manual.html, opennap.h:
  1208.     Removed config_dir, uid and gid config variables.  For security, values
  1209.     about the operating system should not be revelead in case a admin+ user
  1210.     level is compromised.  The -c command line option now specifies the
  1211.     directory where configuration files are found, rather than the master config
  1212.     file.  uid/gid can be specified as part of the configure script (still
  1213.     defaulting to nobody/nobody).
  1214.  
  1215.     added --enable-chroot configure option to allow opennap to be run in a jail.
  1216.     imediately after reading the command line arguments, opennap will chroot()
  1217.     to the configuration directory before reading any config files.
  1218.  
  1219. 2000-09-02  drscholl  <drscholl@users.sourceforge.net>
  1220.  
  1221.     * config.c, configure, configure.in, handler.c, init.c, main.c, opennap.h, server_login.c, synch.c, README:
  1222.     added support for chroot()
  1223.  
  1224.     added time_check() function to detect clock skew when linking servers.  if
  1225.     the delta is more than Max_Time_Delta, the link will be closed.  if it is
  1226.     more than Warn_Time_Delta, it will notify the mods but let the link
  1227.     continue.
  1228.  
  1229.     * manual.html, privmsg.c, sample.conf:
  1230.     added /m chanserv level  command
  1231.  
  1232.     removed channel_limit from sample.conf
  1233.  
  1234. 2000-09-01  drscholl  <drscholl@users.sourceforge.net>
  1235.  
  1236.     * config.c, main.c, manual.html, opennap.h:
  1237.     removed Channel_Limit.  its now always set to 0 by default
  1238.  
  1239.     * channel.c, free_user.c, join.c, opennap.h, part_channel.c, serverlib.c, synch.c:
  1240.     join() should send kick messages to servers which it detects are desynched.
  1241.  
  1242.     fixed TS code to ignore TS==0 from a remote server when the local TS > 0.
  1243.  
  1244.     remove .invited member from USER since it's not necessary
  1245.  
  1246.     always attempt to remove the user from the .invited list of a channel in
  1247.     case the channel was set -INVITE after the user was invited.
  1248.  
  1249.     default channel limit set to 0 instead of Channel_Limit
  1250.  
  1251.     * channel.c:
  1252.     fixed bug in channel ban where it was impossible to ban someone
  1253.  
  1254.     * manual.html, whois.c:
  1255.     fixed bug in which_server() where pkt was used instead of nick when doing
  1256.     hash_lookup()
  1257.  
  1258.     * main.c, manual.html, privmsg.c, remove_connection.c, server_links.c:
  1259.     updated the manual with even more information
  1260.  
  1261.     added NickServ pseudo user and the "ghost" command
  1262.  
  1263. 2000-08-31  drscholl  <drscholl@users.sourceforge.net>
  1264.  
  1265.     * Makefile.am, Makefile.in, announce.c, kill_user.c, login.c, main.c, napster.txt, opennap.h, remove_connection.c, search.c, server_connect.c, serverlib.c, start_opennap:
  1266.     modified handle_io() to fill up the holes created by disconnected clients
  1267.     in the Clients[] array.  all loops over Clients[] should now use Num_Clients
  1268.     as the basis and there is no need to check for NULL entries any more.
  1269.  
  1270.     added start_opennap script to facilitate backing up of gmon.out for
  1271.     profiling.
  1272.  
  1273. 2000-08-30  drscholl  <drscholl@users.sourceforge.net>
  1274.  
  1275.     * whois.c:
  1276.     which_server() should strip trailing whitespace from the nick before
  1277.     attempting to look up the user
  1278.  
  1279.     * search.c, server_links.c:
  1280.     server_pong was checking the wrong arg for detecting the response to an
  1281.     auto-sping.
  1282.  
  1283.     * handler.c, search.c:
  1284.     added error message to the user when a search contains no valid search terms
  1285.  
  1286.     fixed compilation warning about min,max possibly being used uninitialized
  1287.  
  1288.     server_pong was not put in the handler table so it was never called
  1289.  
  1290.     * README, handler.c, opennap.h, privmsg.c, whois.c:
  1291.     added a new command (10119) to display which server a particular user is on.
  1292.     also accessable via /msg operserv server <user>
  1293.  
  1294.     * search.c:
  1295.     forgot to init .maxsize and .maxduration
  1296.  
  1297. 2000-08-29  drscholl  <drscholl@users.sourceforge.net>
  1298.  
  1299.     * README, channel.c, search.c:
  1300.     added support for filtering search results by excluding certains words
  1301.  
  1302.     added support for filtering search based upon file size or mp3 play time.
  1303.  
  1304.     * usermode.c:
  1305.     forgot to add "PING" user mode so users can toggle it
  1306.  
  1307.     * README, config.c, login.c, main.c, opennap.h, search.c, server_links.c:
  1308.     added new numeric 10022 for server->server pong response.  a 750 to a remote
  1309.     server will return a 10022 instead of a 750.
  1310.  
  1311.     added new config var `ping_interval' so specify how often (in seconds) the
  1312.     server should ping its peer servers.
  1313.  
  1314.     added new user mode +PING which controls the server lag detection
  1315.     notifications to mods+
  1316.  
  1317.     fixed bug in fdb_search where it would return all files which matched the
  1318.     word with the fewest matching entries in it instead of checking for all
  1319.     search terms.
  1320.  
  1321.     * server_links.c:
  1322.     changed ping_server to use the same numeric for the server response instead
  1323.     of using send_user()
  1324.  
  1325. 2000-08-28  drscholl  <drscholl@users.sourceforge.net>
  1326.  
  1327.     * channel.c:
  1328.     allow mods+ to invite without being in a channel
  1329.  
  1330.     * channel.c:
  1331.     the notify_ops() call was testing for the server ban instead of channel ban
  1332.  
  1333.     * join.c:
  1334.     server should only set a user as channel operator when a new channel is
  1335.     created when the user is local.  otherwise it should rely on the remote
  1336.     server to specify which user gets opped.
  1337.  
  1338. 2000-08-27  drscholl  <drscholl@users.sourceforge.net>
  1339.  
  1340.     * main.c:
  1341.     fixed bug where server->server data wasn't sent if it had all pending data
  1342.     had been compressed the previous time, but not all sent.
  1343.  
  1344. 2000-08-26  drscholl  <drscholl@users.sourceforge.net>
  1345.  
  1346.     * channel.c, opennap.h, public.c, synch.c:
  1347.     bug in channel_op when used to voice a user it set the operator bit instead.
  1348.  
  1349. 2000-08-25  drscholl  <drscholl@users.sourceforge.net>
  1350.  
  1351.     * napster.txt, search.c:
  1352.     support the LOCAL_ONLY keyword in searches (same as LOCAL), as this is what
  1353.     the official napster servers use.
  1354.  
  1355.     * channel.c:
  1356.     channel bans were still using the wrong numerics
  1357.  
  1358.     * channel.c, list_channels.c, privmsg.c:
  1359.     fixed bug when channel bans not being set
  1360.  
  1361.     * main.c:
  1362.     when shutting down, just close client fd's without calling remove_connection
  1363.     to save time.
  1364.  
  1365. 2000-08-24  drscholl  <drscholl@users.sourceforge.net>
  1366.  
  1367.     * join.c:
  1368.     added comment about why we dont give automatic ops to users in predefined
  1369.     channels
  1370.  
  1371.     * channel.c:
  1372.     fixed memory leak when unbanning from a channel. the BAN struct was never
  1373.     free'd.
  1374.  
  1375.     the reason string was never truncated for channel ban/unban
  1376.  
  1377.     * channel.c, join.c, kick.c, login.c:
  1378.     channel limit and level did not handle the case where the TS was the same,
  1379.     but the values different
  1380.  
  1381.     * channel.c:
  1382.     fixed bug in channel_mode where an op could not change the mode
  1383.  
  1384.     * channel.c, kick.c, opennap.h:
  1385.     fixed bug where it was impossible to kick a user from a channel
  1386.  
  1387.     * config.c:
  1388.     server should notify mods+ when a server variable is changed
  1389.  
  1390.     * channel.c, join.c, TODO:
  1391.     fixed timestamp code on channel limit and mode.  timestamps were not
  1392.     propogated for all server->server links
  1393.  
  1394.     reworked code in channel ops/voice to avoid using goto statements.
  1395.  
  1396.     * ban.c, channel.c, handler.c, join.c, kick.c, list_channels.c, main.c, opennap.h, part_channel.c, public.c, serverlib.c, synch.c:
  1397.     changed model to allow the first user in a non registered channel to gain
  1398.     ops, and to allow ops to create other ops.
  1399.  
  1400.     beefed up channel timestamps to prevent riding netsplits to gain channel
  1401.     privileges.
  1402.  
  1403. 2000-08-23  drscholl  <drscholl@users.sourceforge.net>
  1404.  
  1405.     * main.c, manual.html, motd.c, opennap.h, remove_connection.c, sample.conf, search.c, server_login.c, server_usage.c, FAQ, Makefile.am, Makefile.in, README, add_file.c, announce.c, config.c, configure, configure.in, handler.c, init.c, list.c, list.h, login.c:
  1406.     merged the toklist branch into headrev
  1407.  
  1408. 2000-08-22  drscholl  <drscholl@users.sourceforge.net>
  1409.  
  1410.     * manual.html: New file.
  1411.  
  1412.     * manual.html, config.c:
  1413.     began working on manual.html, opennap's ref manual
  1414.  
  1415.     * FAQ, Makefile.am, Makefile.in, login.c, main.c, motd.c, opennap.h, search.c:
  1416.     added faq about error 10054 under windows.
  1417.  
  1418.     number of connections to the server is now sent in the motd
  1419.  
  1420.     * README, configure, configure.in, handler.c, init.c, login.c, main.c, opennap.h, server_usage.c:
  1421.     added support for tracking client versions.  numeric 10118 will cause the
  1422.     server to dump it's version/count list.  enabled with configure
  1423.     --enable-version-stats
  1424.  
  1425.     * README, add_file.c, opennap.h, search.c:
  1426.     fixed memory leak when removing files from the database
  1427.  
  1428. 2000-08-21  drscholl  <drscholl@users.sourceforge.net>
  1429.  
  1430.     * main.c, search.c:
  1431.     "any" was not accepted as a valid file type when issuing a search request
  1432.  
  1433. 2000-08-19  drscholl  <drscholl@users.sourceforge.net>
  1434.  
  1435.     * main.c:
  1436.     created new function handle_io() to contain the client input/output loop
  1437.  
  1438.     * README:
  1439.     added additional information to the README
  1440.  
  1441.     * handler.c:
  1442.     handle_connection() should read() from server sockets until it returns -1,
  1443.     errno EWOULDBLOCK
  1444.  
  1445.     * add_file.c, list.c, list.h, main.c, search.c, server_login.c:
  1446.     created list_push() function to place a new list element at the head of a
  1447.     list.
  1448.  
  1449.     changed from list_append() to list_push() in many places where the order
  1450.     doesn't count.  list traversal was eating much cpu needlessly.
  1451.  
  1452.     collapsed the two loops over Max_Clients in main() which handle input/output
  1453.     to clients.  given that the write phase has to wait for select() anyway,
  1454.     there is no reason to separate the two.  should save some time in the main
  1455.     loop.
  1456.  
  1457. 2000-08-17  drscholl  <drscholl@users.sourceforge.net>
  1458.  
  1459.     * announce.c, ban.c, login.c:
  1460.     connections from banned clients are now only displayed on the server to
  1461.     which the connection was made.
  1462.  
  1463. 2000-08-16  drscholl  <drscholl@users.sourceforge.net>
  1464.  
  1465.     * remove_connection.c, sample.conf, search.c, add_file.c, announce.c, config.c, init.c, list.c, list.h, main.c, opennap.h:
  1466.     changed db to use list of search tokens for matching rather than string
  1467.     comparisons
  1468.  
  1469. 2000-08-15  drscholl  <drscholl@users.sourceforge.net>
  1470.  
  1471.     * add_file.c, configure, configure.in, main.c:
  1472.     added --enable-gprof configure option to compile with -pg
  1473.  
  1474.     fixed compile error when free'ing Filter hash table
  1475.  
  1476.     * announce.c, list.c, list.h:
  1477.     announce() should check for the user's level when sending a message from a
  1478.     cloaked user so that it shows the real nick for privileged users.
  1479.  
  1480.     added list_foreach() function
  1481.  
  1482. 2000-08-13  drscholl  <drscholl@users.sourceforge.net>
  1483.  
  1484.     * NEWS, README, opennap.dsp, opennap.dsw, opennap.h, opennap.opt, ChangeLog:
  1485.     updated win32 build files
  1486.  
  1487.     * TODO, browse.c, resume.c:
  1488.     fixes to compile with --enable-resume
  1489.  
  1490. 2000-08-10  drscholl  <drscholl@users.sourceforge.net>
  1491.  
  1492.     * channel.c, synch.c:
  1493.     when syncing bans, the server should just say that it set the ban so that
  1494.     pop_user_server() doesnt return NULL for *sendernick.
  1495.  
  1496. 2000-08-09  drscholl  <drscholl@users.sourceforge.net>
  1497.  
  1498.     * NEWS, sample.conf:
  1499.     added additional information about flood control to the NEWS and sample.conf
  1500.     files
  1501.  
  1502.     * NEWS, TODO, config.c, handler.c, join.c, login.c, main.c, opennap.h, sample.conf, usermode.c:
  1503.     comma (,) is no longer a valid char in nicks/channels
  1504.  
  1505.     added server-side flood protection controlled by new config vars
  1506.     `flood_commands' and `flood_time'.  mods+ notification is controlled by
  1507.     usermode FLOOD.
  1508.  
  1509. 2000-08-08  drscholl  <drscholl@users.sourceforge.net>
  1510.  
  1511.     * change.c:
  1512.     change_pass() now reports back success to the user
  1513.  
  1514.     * ban.c, config.c, filter.c, login.c, main.c, opennap.h:
  1515.     changed search token filter to be a hash table.  linked list traversal
  1516.     consumed too much cpu time
  1517.  
  1518.     notify_mods() call in ban() used sender instead of sendernick as as arg.
  1519.  
  1520.     check_ban() should be called prior to eject_client() in login()
  1521.  
  1522.     * search.c, level.c:
  1523.     find_search() had %d instead of %s to print out the id of expired searches
  1524.  
  1525.     * level.c:
  1526.     level() should force an update when it detects an out of date timestamp so
  1527.     that desyncs are corrected.
  1528.  
  1529.     * NEWS, config.c, login.c, opennap.h, sample.conf:
  1530.     made the ejection of nonsharing clients a boolean configuration option
  1531.  
  1532.     * ChangeLog, Makefile.am, Makefile.in, NEWS, TODO, config.c, filter.c, handler.c, init.c, kill_user.c, main.c, opennap.h, sample.filter, search.c:
  1533.     search token filtering is now configurable instead of hardcoded.  opennap
  1534.     now reads the `filter' file to determine which words to ignore.
  1535.  
  1536.     server_stats() should not use `tag' since it is called by login() with no
  1537.     arguments.
  1538.  
  1539. 2000-08-07  drscholl  <drscholl@users.sourceforge.net>
  1540.  
  1541.     * Makefile.am, Makefile.in, NEWS, browse.c, configure, configure.in, handler.c, join.c, login.c, main.c, napster.txt, opennap.h, opennap.init:
  1542.     changed basename() to my_basename() to avoid compilation errors on some
  1543.     systems.
  1544.  
  1545.     look for -lz in /usr/local/lib
  1546.  
  1547.     opennap should return message 13 when receving unknown commands prior to
  1548.     receipt of the login (2) message.
  1549.  
  1550.     added support for tcp_wrappers
  1551.  
  1552.     mods+ could not bypass the strict channel join setting
  1553.  
  1554.     opennap should send the 316 numeric prior to disconnecting clients to be
  1555.     compatible with the napster.com servers
  1556.  
  1557.     updated napster.txt with new information
  1558.  
  1559.     sysv-init style script for starting opennap at boot from
  1560.     Geoffrey Lee <snailtalk@linux-mandrake.com>
  1561.  
  1562. 2000-08-05  drscholl  <drscholl@users.sourceforge.net>
  1563.  
  1564.     * configure, configure.in, init.c, login.c:
  1565.     check for -lz in /usr/local/lib
  1566.  
  1567.     cast pid_t to int in dump_pid()
  1568.  
  1569.     added eject_client() to find a client with 0 files shared that has been
  1570.     connected the longest and kill it.  if the server is full, login() will call
  1571.     eject_client() to try and kill someone else to make room for the current
  1572.     login.
  1573.  
  1574. 2000-08-04  drscholl  <drscholl@users.sourceforge.net>
  1575.  
  1576.     * ban.c, main.c, opennap.h, redirect.c, synch.c, README:
  1577.     extended the ban command to accept a timeout
  1578.  
  1579.     * Makefile.am, Makefile.in, README, handler.c, join.c, napster.txt, opennap.h, redirect.c, synch.c, whois.c:
  1580.     added support for client redirect (821) and client cycle (822) numerics
  1581.  
  1582.     changed set chan level to 823 to match official servers
  1583.  
  1584.     updated napster.txt with new information obtained from release of nap source
  1585.  
  1586.     the whowas response should have quoted the user's level similar to the whois
  1587.     response
  1588.  
  1589. 2000-08-03  drscholl  <drscholl@users.sourceforge.net>
  1590.  
  1591.     * FAQ, add_file.c, handler.c, remove_file.c, synch.c:
  1592.     added more checking to prevent a user's library size from being negative
  1593.  
  1594. 2000-07-31  drscholl  <drscholl@users.sourceforge.net>
  1595.  
  1596.     * add_file.c:
  1597.     finally found buffer overrun in add_directory().  strncpy() does not write
  1598.     a \0 to the end of the string if all the space was used up before getting to
  1599.     the end of the string
  1600.  
  1601. 2000-07-30  drscholl  <drscholl@users.sourceforge.net>
  1602.  
  1603.     * add_file.c, glob.c, search.c:
  1604.     rewrote tokenize() to reduce the number of strcmp() calls when reaping bad
  1605.     tokens.
  1606.  
  1607.     glob_match() was not case-insensitive
  1608.  
  1609. 2000-07-29  drscholl  <drscholl@users.sourceforge.net>
  1610.  
  1611.     * ChangeLog, NEWS, config.c, main.c, opennap.h, sample.conf, server_usage.c:
  1612.     added stats reporting for total bytes sent/received
  1613.  
  1614.     server_usage() now reports searches/sec and total bytes in/out
  1615.  
  1616. 2000-07-28  drscholl  <drscholl@users.sourceforge.net>
  1617.  
  1618.     * browse.c: reverted previous changes
  1619.  
  1620.     * add_file.c, download.c, init.c, main.c, opennap.h, remove_file.c, search.c, upload_complete.c, util.c:
  1621.     reverted back to storing full pathnames in the DATUM struct.  it was causing
  1622.     too much load having to regenerate the filename every time match() needed to
  1623.     be called.
  1624.  
  1625.     * config.c, join.c, main.c, opennap.h, search.c, server_usage.c:
  1626.     added `search_timeout' variable to set the expiration time of remote
  1627.     searches (default: 180 secs)
  1628.  
  1629.     bytes in/out was not time averaged in server_usage()
  1630.  
  1631.     * channel.c, free_user.c, login.c, main.c, opennap.h, remove_connection.c, synch.c:
  1632.     cache the server names so that each USER struct can reference it a single
  1633.     time instead of once for each user
  1634.  
  1635.     * configure, configure.in:
  1636.     fixed bug in configure which causes DEBUG to always be set
  1637.  
  1638.     * download.c, upload_complete.c:
  1639.     reorganized code in download() to lookup the user's file only once
  1640.  
  1641.     * TODO, add_file.c, download.c, opennap.h, remove_file.c, search.c, upload_complete.c, util.c:
  1642.     added more strict checking to make sure the directory name also matches when
  1643.     looking up a file by its basename
  1644.  
  1645.     * browse.c, download.c, opennap.h, remove_file.c, upload_complete.c, util.c, add_file.c:
  1646.     modified hash table of user's files to index by only the pathname instead of
  1647.     the full directory name since that is no longer available
  1648.  
  1649.     * add_file.c, browse.c, download.c, resume.c:
  1650.     fixed many other places where the full filename was not returned
  1651.  
  1652.     * search.c:
  1653.     search did not return the full pathname of the shared files
  1654.  
  1655.     * add_file.c, browse.c, init.c, main.c, opennap.h, search.c, TODO:
  1656.     created new hash table `Paths' for storing the directory components of
  1657.     shared files a single time for all files in the same directory.
  1658.  
  1659. 2000-07-27  drscholl  <drscholl@users.sourceforge.net>
  1660.  
  1661.     * channel.c, sample.channels:
  1662.     altered channels file so that # is no longer considered a comment in
  1663.     `version 1' files.
  1664.  
  1665.     * NEWS, join.c, login.c:
  1666.     channel names must now begin with # or &.  join will automatically prepend a
  1667.     hash (#) if missing
  1668.  
  1669.     * configure, configure.in:
  1670.     debugging is no longer enabled by default.  use `configure --enable-debug'
  1671.     to turn it on
  1672.  
  1673.     * add_file.c, main.c, opennap.h:
  1674.     change Num_Gigs to a double.  unsigned int was running out at 4096 GB.
  1675.  
  1676.     * Makefile.am, Makefile.in, NEWS, README, ban.c, channel.c, configure, configure.in, download.c, glob.c, join.c, list_users.c, login.c, napster.txt, opennap.h, resume.c, search.c, synch.c, upload_complete.c, util.c, whois.c:
  1677.     imported changes from adns branch, without adns support
  1678.  
  1679.     * NEWS, join.c:
  1680.     fixed bug in channel rollover code causing an infinite loop
  1681.  
  1682. 2000-07-26  drscholl  <drscholl@users.sourceforge.net>
  1683.  
  1684.     * channel.c:
  1685.     fixed bug which prevented registered channels from being dropped
  1686.  
  1687.     * remove_connection.c:
  1688.     check to make sure con->dns != 0 before calling adns_cancel()
  1689.  
  1690.     * upload_complete.c:
  1691.     fixed bug with downloads not working.  forgot to switch .host to .ip
  1692.     in the download responses
  1693.  
  1694. 2000-07-25  drscholl  <drscholl@users.sourceforge.net>
  1695.  
  1696.     * main.c:
  1697.     added adns_if_noserverwarn to adns_init() to turn off warnings
  1698.  
  1699.     * login.c, main.c:
  1700.     login() did not convert the uint32 ip address to dot-quad before using it
  1701.     as the host name
  1702.  
  1703.     * server_connect.c:
  1704.     .resolved should be set when making an outgoing server connection so the
  1705.     connection doesnt time out waiting for a nonexistent dns lookup
  1706.  
  1707.     * configure, configure.in:
  1708.     configure should use `if test' rather than `if ['
  1709.  
  1710.     * README, list_users.c, whois.c:
  1711.     added the client ip address in dot-quad format to the end of the global user
  1712.     list response, and the whois response
  1713.  
  1714.     * configure, configure.in:
  1715.     configure should look for -ladns in /usr/local/lib as well
  1716.  
  1717.     * glob.c: New file.
  1718.  
  1719.     * glob.c: forgot to add glob.c
  1720.  
  1721.     * Makefile.am, Makefile.in, NEWS, ban.c, channel.c, configure, configure.in, download.c, join.c, list_users.c, login.c, main.c, napster.txt, opennap.h, remove_connection.c, resume.c, search.c, synch.c, whois.c:
  1722.     added initial support for adns to add reverse dns lookups for client
  1723.     connections.
  1724.  
  1725. 2000-07-23  drscholl  <drscholl@users.sourceforge.net>
  1726.  
  1727.     * ChangeLog, Makefile.in, README, configure, setup.c:
  1728.     fixed setup.c to compile under win32
  1729.  
  1730.     updated ChangeLog with recent CVS log entries.
  1731.  
  1732. 2000-07-20  drscholl  <drscholl@users.sourceforge.net>
  1733.  
  1734.     * login.c:
  1735.     clone checker and max connections should only be checked for user logins,
  1736.     not server logins.
  1737.  
  1738.     * napster.txt:
  1739.     updated napster.txt on the 870 (add directory) command
  1740.  
  1741.     * add_file.c, handler.c, search.c:
  1742.     fixed possible buffer overrun in add_directory()
  1743.  
  1744.     fixed handle_connection() to avoid sending MSG_SERVER_USER_SHARING commands
  1745.     after every MSG_CLIENT_ADD_DIRECTORY command.
  1746.  
  1747.     added the server from which the command came to the log() messages generated
  1748.     by remote_search() and remote_search_result()
  1749.  
  1750. 2000-07-16  drscholl  <drscholl@users.sourceforge.net>
  1751.  
  1752.     * config.c, login.c, main.c, opennap.h, sample.conf:
  1753.     added clone checking controlled by new `max_clones' config var.
  1754.  
  1755. 2000-07-13  drscholl  <drscholl@users.sourceforge.net>
  1756.  
  1757.     * browse.c:
  1758.     fixed bug in new_browse() where no results would be returned in
  1759.     max_browse_results was set to 0 (which should mean unlimited)
  1760.  
  1761. 2000-07-08  drscholl  <drscholl@users.sourceforge.net>
  1762.  
  1763.     * add_file.c, configure.in, opennap.h:
  1764.     fixed buffer overflow in add_directory() when the directory portion of the
  1765.     filename was >=255 chars
  1766.  
  1767. 2000-07-06  drscholl  <drscholl@users.sourceforge.net>
  1768.  
  1769.     * server_usage.c:
  1770.     added bytes in and bytes out to the server stats
  1771.  
  1772. 2000-07-02  drscholl  <drscholl@users.sourceforge.net>
  1773.  
  1774.     * README, opennap.h, privmsg.c:
  1775.     changed rehash numeric to 10117 to avoid conflict with old server ping
  1776.     numeric
  1777.  
  1778.     added `rehash' to the list of operserv commands
  1779.  
  1780.     * README, config.c, handler.c, opennap.h:
  1781.     added rehash (10116) command to cause a server to reload it config files
  1782.  
  1783.     * README, add_file.c, server_connect.c:
  1784.     log message for bitrateToMask() said freqToMask
  1785.  
  1786.     server_connect should check for missing host argument
  1787.  
  1788. 2000-06-30  drscholl  <drscholl@users.sourceforge.net>
  1789.  
  1790.     * muzzle.c:
  1791.     added missing return when attempting to unmuzzle a user that isnt muzzled
  1792.  
  1793. 2000-06-29  drscholl  <drscholl@users.sourceforge.net>
  1794.  
  1795.     * channel.c:
  1796.     channel_voice() did not check for permission to execute the command
  1797.  
  1798.     * browse.c, channel.c, muzzle.c, serverlib.c:
  1799.     fixed compilation warnings about unused `len'
  1800.  
  1801.     pop_user_server() had a bad log() message with the message tag value causing
  1802.     a segfault
  1803.  
  1804.     muzzle() should ensure that db is not NULL before using it
  1805.  
  1806. 2000-06-27  drscholl  <drscholl@users.sourceforge.net>
  1807.  
  1808.     * whois.c:
  1809.     append_string() allocated extra space but didnt copy the data to append
  1810.  
  1811.     * channel.c, join.c:
  1812.     bugfixes from panasync.  join() was setting the wrong user to channel
  1813.     operator since chanUser was reused for sending a join message to all clients
  1814.     in the channel.
  1815.  
  1816.     in channel_muzzle(), need to check for sender!=NULL when checking the user
  1817.     level permission
  1818.  
  1819. 2000-06-26  drscholl  <drscholl@users.sourceforge.net>
  1820.  
  1821.     * browse.c, channel.c, muzzle.c, whois.c:
  1822.     muzzled users should not be able to channel wallop
  1823.  
  1824. 2000-06-24  drscholl  <drscholl@users.sourceforge.net>
  1825.  
  1826.     * ChangeLog, NEWS, README:
  1827.     post 0.34 release commit
  1828.  
  1829. 2000-06-23  drscholl  <drscholl@users.sourceforge.net>
  1830.  
  1831.     * TODO, channel.c:
  1832.     channel_mode should not allow a user below the channel level to change
  1833.     the mode
  1834.  
  1835. 2000-06-22  drscholl  <drscholl@users.sourceforge.net>
  1836.  
  1837.     * Makefile.in, README, channel.c, handler.c, opennap.h, privmsg.c, public.c, serverlib.c, synch.c:
  1838.     added channel voice and muzzle commands
  1839.  
  1840.     * channel.c, join.c, opennap.h, usermode.c:
  1841.     removed channel and topic usermode flags since they are no longer used
  1842.  
  1843.     reworked join() to allow channel ops to bypass the +INVITE and limit checks
  1844.  
  1845.     * channel.c, configure, configure.in, join.c, kick.c, opennap.h, topic.c:
  1846.     updated version to 0.34
  1847.  
  1848.     removed notify_mods() from all channel specific calls.  notify_ops() will
  1849.     now notify mods+ in the channel.
  1850.  
  1851. 2000-06-21  drscholl  <drscholl@users.sourceforge.net>
  1852.  
  1853.     * napster.txt, privmsg.c:
  1854.     added invite and mode command to chanserv
  1855.  
  1856.     * README, browse.c, handler.c, opennap.h, whois.c:
  1857.     added new experimental browse command (10301/10302) for more compact browse
  1858.     listings
  1859.  
  1860. 2000-06-19  drscholl  <drscholl@users.sourceforge.net>
  1861.  
  1862.     * README, channel.c, opennap.h, synch.c, topic.c:
  1863.     added +TOPIC channel mode to allow any user to change the topic
  1864.  
  1865. 2000-06-17  drscholl  <drscholl@users.sourceforge.net>
  1866.  
  1867.     * channel.c:
  1868.     invite message printed the wrong user for who issued the invite
  1869.  
  1870.     * README, channel.c, free_user.c, handler.c, join.c, opennap.h, serverlib.c, synch.c, util.c:
  1871.     added +INVITE channel mode
  1872.  
  1873.     * README, channel.c, opennap.h, public.c, synch.c:
  1874.     added +MODERATED channel mode - only ops and mods+ can speak in public
  1875.  
  1876.     * README, channel.c, handler.c, join.c, list_channels.c, opennap.h, part_channel.c, synch.c, whois.c:
  1877.     added channel_mode(10209) command
  1878.  
  1879.     added +PRIVATE channel mode to make the channel not show up in the channel
  1880.     lists or whois response
  1881.  
  1882. 2000-06-15  drscholl  <drscholl@users.sourceforge.net>
  1883.  
  1884.     * network.c: solaris doesnt define INADDR_NONE
  1885.  
  1886.     * buffer.c:
  1887.     avoid coredump in queue_data() when buffer_new() fails
  1888.  
  1889.     * search.c, server_usage.c:
  1890.     server stat message should use %u for the number of total kbytes
  1891.  
  1892.     search expected "EQUALS" intead of "EQUAL TO"
  1893.  
  1894. 2000-06-14  drscholl  <drscholl@users.sourceforge.net>
  1895.  
  1896.     * README, channel.c, handler.c, opennap.h, privmsg.c:
  1897.     added channel_wallop (10208) command to send a message to all mods+ and
  1898.     channel operators for a specified channel
  1899.  
  1900.     * config.c:
  1901.     default max_nick_length changed to 19 since the win32 napster client can't
  1902.     cope with anything longer than this
  1903.  
  1904.     * userdb.c:
  1905.     expired nicks weren't removed from User_Db until the server restarted
  1906.  
  1907.     * login.c, userdb.c:
  1908.     need to use strtoul() to convert ip address from string to unsigned int
  1909.     instead of atoi()
  1910.  
  1911.     * Makefile.am, Makefile.in, add_file.c, buffer.c, free_user.c, init.c, login.c, main.c, mempool.c, mempool.h, opennap.h, remove_connection.c, search.c, serverlib.c:
  1912.     removed mempool code.  it turned out to be less efficient that malloc/free
  1913.  
  1914. 2000-06-13  drscholl  <drscholl@users.sourceforge.net>
  1915.  
  1916.     * buffer.c, login.c, server_connect.c, server_login.c, serverlib.c:
  1917.     buffer_queue() did not set the .datasize after copying data
  1918.  
  1919.     * buffer.c:
  1920.     fixed buffer_queue() to handle input larger than BUFFER_SIZE bytes
  1921.  
  1922.     * remove_connection.c:
  1923.     fixed memory leak with free'g the input buffers for client connections
  1924.  
  1925.     * buffer.c: fixed bug in buffer_compress()
  1926.  
  1927.     * buffer.c, debug.c, free_user.c, init.c, login.c, main.c, mempool.c, opennap.h, remove_connection.c, serverlib.c, util.c:
  1928.     added memory pool management for users, connections, send queue buffers
  1929.  
  1930.     * Makefile.am, Makefile.in, add_file.c, init.c, main.c, mempool.c, mempool.h, opennap.h, search.c:
  1931.     added initial support for memory pools
  1932.  
  1933. 2000-06-11  drscholl  <drscholl@users.sourceforge.net>
  1934.  
  1935.     * README, login.c:
  1936.     servers should not issue KILL messages to the server from which a nick
  1937.     collision occurs
  1938.  
  1939. 2000-06-10  drscholl  <drscholl@users.sourceforge.net>
  1940.  
  1941.     * setup.c, Makefile.in, TODO, search.c:
  1942.     rewrote search_internal() to be able to parse arbitrary length search
  1943.     strings
  1944.  
  1945.     setup should create files as -rw-------
  1946.  
  1947.     * Makefile.in, TODO, configure, configure.in, free_user.c, kill_user.c, login.c, opennap.h, synch.c:
  1948.     added .killed member to CONNECTION so that a QUIT is not issued when a local
  1949.     user is killed (the KILL is sufficient)
  1950.  
  1951.     consolodated the MSG_SERVER_USER_IP message into MSG_CLIENT_LOGIN so that
  1952.     nick collision can be handled more gracefully.  This allows the server to
  1953.     reject the newer user instead of rejecting both clients.
  1954.  
  1955. 2000-06-09  drscholl  <drscholl@users.sourceforge.net>
  1956.  
  1957.     * Makefile.in, channel.c, configure, configure.in, muzzle.c:
  1958.     check for -lsocket (needed for os/2)
  1959.  
  1960.     fixed segfault in muzzle() for log message when the user is already muzzled
  1961.     and the user is not logged in
  1962.  
  1963.     * NEWS, README, configure, configure.in, opennap.h:
  1964.     post 0.32 commit
  1965.  
  1966. 2000-06-08  drscholl  <drscholl@users.sourceforge.net>
  1967.  
  1968.     * channel.c, login.c:
  1969.     bug in channel_op() allows any user to make themself a channel operator.
  1970.     missing a return statement after the permission denied message
  1971.  
  1972.     servers now synch the user level when a user logs in to ensure all servers
  1973.     have the same settings
  1974.  
  1975.     * Makefile.in, NEWS, README, motd.c, opennap.h, opennap.opt, setup.dsp, ChangeLog:
  1976.     updated for 0.31 release
  1977.  
  1978.     motd.c was missing stdlib.h for free()
  1979.  
  1980.     updated project files for Win32 build
  1981.  
  1982.     * server_login.c:
  1983.     server link log messages are important after all
  1984.  
  1985.     * kill_user.c, search.c:
  1986.     removed log() message from kill_user().  notify_mods() is sufficient
  1987.  
  1988.  
  1989.     removed old log() in search_callback().  problem seems to be fixed.
  1990.  
  1991.     * server_login.c:
  1992.     added more notify_mods() calls in server_login() indicating server link
  1993.     failures
  1994.  
  1995. 2000-06-07  drscholl  <drscholl@users.sourceforge.net>
  1996.  
  1997.     * motd.c:
  1998.     the motd file is now loaded into memory once at startup to reduce the
  1999.     overhead of fileio every time a user logs in
  2000.  
  2001. 2000-06-06  drscholl  <drscholl@users.sourceforge.net>
  2002.  
  2003.     * search.c:
  2004.     removed log message for bitrate test since it seems to be working
  2005.  
  2006.     * search.c:
  2007.     added a log() message to search_callback() to print why the minbitrate test
  2008.     fails for a search to track down the problem we have seen
  2009.  
  2010.     * list_users.c:
  2011.     added new flags to global_user_list():
  2012.         z    muzzled users
  2013.         c    cloaked users
  2014.  
  2015.     * ban.c, login.c, main.c, opennap.h, util.c:
  2016.     moved check for ip bans to login() so that the user name can be printed in
  2017.     the mod notification
  2018.  
  2019.     fixed ban save/load to store all bans in the long format.  bans are now
  2020.     restored to the same order they were dumped, so that the older bans are last
  2021.  
  2022.     * search.c:
  2023.     max linespeed and frequency checked for "at most" when the correct string is
  2024.     "at best"
  2025.  
  2026. 2000-06-05  drscholl  <drscholl@users.sourceforge.net>
  2027.  
  2028.     * search.c:
  2029.     "at most" qualifiers were not passed to peer servers properly
  2030.  
  2031.     * tresolv.c, tresolv.h, whois.c, Makefile.am, Makefile.in, configure, configure.in, main.c:
  2032.     removed tresolv code since it wont work effectively
  2033.  
  2034. 2000-06-04  drscholl  <drscholl@users.sourceforge.net>
  2035.  
  2036.     * search.c:
  2037.     bitrate/samplerate search criteria weren't using BitRate and SampleRate
  2038.  
  2039.     * configure, free_user.c, login.c, opennap.h, serverlib.c, whois.c:
  2040.     initial changes to integrate support for dns names in opennap
  2041.  
  2042.     * configure, configure.in, whois.c:
  2043.     changed whois to report the dns name for local users
  2044.  
  2045.     * Makefile.am, Makefile.in, ban.c, configure, configure.in, main.c, tresolv.c, tresolv.h:
  2046.     added threaded dns lookup routines
  2047.  
  2048. 2000-06-03  drscholl  <drscholl@users.sourceforge.net>
  2049.  
  2050.     * README, configure, configure.in, privmsg.c:
  2051.     changed server link documentation in README to only describe the method of
  2052.     putting both passwords in the file
  2053.  
  2054.     added op and deop commands to chanserv.  removed help for these items in
  2055.     operserv.
  2056.  
  2057.     * config.c:
  2058.     allow mods+ to query config variables but not set them
  2059.  
  2060.     * main.c, server_connect.c:
  2061.     added notify_mods() to report server link failures
  2062.  
  2063.     * search.c:
  2064.     added "mp3z" to the list of tokens to ignore in filenames
  2065.  
  2066.     * change.c, handler.c, opennap.h:
  2067.     accept the change_email command even if its not supported
  2068.  
  2069.     * login.c:
  2070.     removed extraneous log messages from login()
  2071.  
  2072.     added notify_mods() message to register_user()
  2073.  
  2074.     * add_file.c, remove_file.c:
  2075.     removed log message from remove_file() when the file requested is not shared
  2076.  
  2077.     removed log message from add_file() for duplicates
  2078.  
  2079.     instead of calling strlen() just calculate the difference between av[0] and
  2080.     av[1] to detect long filenames in add_file/share_file
  2081.  
  2082.     * main.c, server_usage.c:
  2083.     added number of registered users to the server stats command
  2084.  
  2085.     * add_file.c, config.c, init.c, main.c, motd.c, opennap.h, search.c:
  2086.     motd is now only fopen'd once since it gets used all the time.
  2087.  
  2088.     * ChangeLog, Makefile.am, Makefile.in, ban.c, configure, configure.in, kick.c, level.c, login.c, napster.txt, opennap.h, sample.conf:
  2089.     fixed core in level().  user might be NULL so don't operate on it.
  2090.  
  2091.     * config.c:
  2092.     changed nick_expire to 31 days by default
  2093.  
  2094.     * announce.c, buffer.c, handler.c, search.c:
  2095.     removed several unnecessary log entries
  2096.  
  2097.     error message from read() and write() should include the host for which the
  2098.     error occured for better debugging
  2099.  
  2100. 2000-06-02  drscholl  <drscholl@users.sourceforge.net>
  2101.  
  2102.     * README, change.c, join.c, level.c, login.c, muzzle.c, opennap.h, synch.c, userdb.c:
  2103.     added timestamps to the channel modes on synch
  2104.  
  2105.     changed the .created member of USERDB to be .timestamp.  This field is now
  2106.     used to keep track of when the entry was last modified so it can be used to
  2107.     synch servers better.
  2108.  
  2109.     fixed synch of cloak status.  added ability to absolutely turn cloak on in a
  2110.     server->server message
  2111.  
  2112.     rewrote level() to be much cleaner
  2113.  
  2114.     muzzle status was not correctly restored from the users file upon startup
  2115.  
  2116.     new function create_db() created a USERDB struct based on a USER struct to
  2117.     avoid duplicate code in level() and muzzle()
  2118.  
  2119.     * channel.c, handler.c, join.c, level.c, opennap.h, privmsg.c, synch.c, README:
  2120.     added timestamp to channels so that servers can sync the level and limit
  2121.     properly
  2122.  
  2123.     added drop channel (10207) command to turn a persistent channel into a
  2124.     normal channel
  2125.  
  2126.     * TODO, add_file.c:
  2127.     prevent refcount overflow by discarding tokens in excess of 30
  2128.  
  2129. 2000-06-01  drscholl  <drscholl@users.sourceforge.net>
  2130.  
  2131.     * hotlist.c:
  2132.     only send the notice about the hotlist limit once to avoid flooding the
  2133.     client
  2134.  
  2135.     * main.c:
  2136.     added dump_state() to dump all state info (users/channels/bans) to disk
  2137.     on a periodic basis.
  2138.  
  2139.     * add_file.c:
  2140.     freqToMask() and bitrateToMask() now display the user and client info in
  2141.     their error messages for debugging
  2142.  
  2143.     * change.c, configure, configure.in, handler.c, level.c, login.c, muzzle.c, opennap.h, userdb.c, whois.c:
  2144.     support for keeping client email address is now turned off by default.
  2145.     added --enable-email configure option to turn it back on
  2146.  
  2147.     * add_file.c, config.c, main.c, opennap.h:
  2148.     added max_path variable to limit the length of a filename to the add_file()
  2149.     command (default: 256)
  2150.  
  2151.     * add_file.c:
  2152.     add-directory() should process the rest of the line when it detects a
  2153.     duplicate rather than aborting
  2154.  
  2155.     * add_file.c, browse.c:
  2156.     the browse result didnt use BitRate and SampleRate to get the real values
  2157.  
  2158.     * add_file.c, browse.c, opennap.h, search.c:
  2159.     compacted the DATUM struct since the bitrate and samplerate can only have a
  2160.     few defined values
  2161.  
  2162.     ->hash member of DATUM should not be present when resume is disabled.
  2163.  
  2164.     * login.c, opennap.h:
  2165.     dont need the ->hash member of DATUM struct when compiling without resume
  2166.     support
  2167.  
  2168.     changed kill message for ghosts in login()  to include the name of the
  2169.     server where the ghost is connected
  2170.  
  2171.     * login.c: ghost code was still buggy
  2172.  
  2173.     * login.c:
  2174.     fixed broken ghost code which caused a server core
  2175.  
  2176.     * synch.c:
  2177.     syncing the chanops didnt including the :sender parameter
  2178.  
  2179.     * channel.c, login.c, remove_connection.c:
  2180.     fixed login() to allow the ghost detection to proceed with the login without
  2181.     killing both connections
  2182.  
  2183. 2000-05-31  drscholl  <drscholl@users.sourceforge.net>
  2184.  
  2185.     * ChangeLog, NEWS, README:
  2186.     updated files for 0.30 release
  2187.  
  2188.     * announce.c, login.c:
  2189.     announce() should use Operator as the nick when the user is cloaked
  2190.  
  2191.     invalid_nick() should not allow `operator'
  2192.  
  2193.     * login.c:
  2194.     forgot to issue a KILL when terminating a ghost
  2195.  
  2196.     * login.c, napster.txt:
  2197.     server will now terminate old connections if a client logs in from the same
  2198.     ip for the same nick.  this allows clients to kill their own ghosts.
  2199.  
  2200.     * ban.c, browse.c, change.c, channel.c, hotlist.c, join.c, level.c, login.c, opennap.h, privmsg.c, sample.conf, serverlib.c:
  2201.     added generic invalid_nick_msg() function
  2202.  
  2203.     * ban.c, change.c, config.c, kick.c, kill_user.c, main.c, muzzle.c, opennap.h, serverlib.c:
  2204.     added max_reason configuration variable to limit the size of the reason
  2205.     strings in the muzzle/kick/kill messages
  2206.  
  2207.     * FAQ, config.c, list_users.c, part.c, public.c:
  2208.     re-added the form_message() calls for public() and emote()
  2209.  
  2210.     * config.c, configure, configure.in, login.c, main.c, napster.txt, opennap.h, sample.conf, topic.c:
  2211.     added max_client_string config variable to limit the length of the client
  2212.     version string in the login command
  2213.  
  2214.     strlen() returns ssize_t so have to cast the Max_* to unsigned to avoid
  2215.     compiler warnings
  2216.  
  2217.     * Makefile.in, ban.c, config.c, download.c, hotlist.c, main.c, muzzle.c, opennap.h, privmsg.c, sample.conf, topic.c:
  2218.     added max_ignore config var to limit user lists
  2219.  
  2220.     added max_hotlist config var to limit user lists
  2221.  
  2222.     added max_topic config var to limit channel topics
  2223.  
  2224.     more fixes to detect invalid nicknames before they are used
  2225.  
  2226.     * hotlist.c:
  2227.     dont allow invalid nicks to be added to the hotlist
  2228.  
  2229.     * login.c:
  2230.     fixed bug in register_user() where the number of args was not checked
  2231.  
  2232.     fixed bug in register_user() where an invalid nick could be registered
  2233.  
  2234.     fixed bug in register_nick() where invalid nick was not checked for
  2235.  
  2236.     * add_file.c, ban.c, browse.c, buffer.c, change.c, channel.c, client_quit.c, config.c, debug.c, download.c, getopt.c, handler.c, hash.c, hotlist.c, join.c, kick.c, kill_user.c, level.c, list.c, list_users.c, login.c, main.c, md5.c, metaserver.c, motd.c, muzzle.c, network.c, opennap.h, part.c, part_channel.c, patchnap.c, ping.c, privmsg.c, public.c, remove_connection.c, remove_file.c, resume.c, search.c, server_connect.c, server_links.c, server_login.c, serverlib.c, spyserv.c, synch.c, timer.c, topic.c, upload_complete.c, userdb.c, usermode.c, whois.c:
  2237.     more checks to make sure that invalid channels and nicks are not passed back
  2238.     to the client or to other servers
  2239.  
  2240.     * change.c, download.c, kick.c, kill_user.c, opennap.h, privmsg.c, serverlib.c, whois.c:
  2241.     modified nosuchuser() not to take the nick as an argument to prevent buffer
  2242.     overflows
  2243.  
  2244.     * config.c, configure, configure.in, join.c, kick.c, list_users.c, main.c, opennap.h, part.c, public.c, serverlib.c, topic.c, ChangeLog, NEWS, channel.c:
  2245.     added exhaustive checks to make sure the channel name is valid in all
  2246.     commands
  2247.  
  2248.     * Makefile.in, buffer.c:
  2249.     fixed buffer overflow when output to the client is larger than 1024 bytes in
  2250.     one command
  2251.  
  2252.     * ChangeLog, NEWS, main.c:
  2253.     updated ChangeLog and NEWS for 0.28 release
  2254.  
  2255.     schedule dump_channels() to happen at the user_db_interval
  2256.  
  2257. 2000-05-30  drscholl  <drscholl@users.sourceforge.net>
  2258.  
  2259.     * opennap.dsp, opennap.h, opennap.opt, remove_connection.c, sample.channels, server_login.c, topic.c, Makefile.in, README, buffer.c, config.c, configure, configure.in, handler.c, main.c:
  2260.     zlib is now a requirement to compile.  removed all HAVE_LIBZ conditional
  2261.     code.
  2262.  
  2263.     fixed bug in topic() which caused a buffer overrun in the new code to change
  2264.     \r and \n to space
  2265.  
  2266.     * topic.c:
  2267.     convert \r and \n in channel topics to space chars to avoid problems when
  2268.     writing out the channels file
  2269.  
  2270. 2000-05-28  drscholl  <drscholl@users.sourceforge.net>
  2271.  
  2272.     * TODO, add_file.c, download.c, upload_complete.c:
  2273.     if resume support is disabled, dont store the md5 hash value and just return
  2274.     a bogus zero value wherever it is called for
  2275.  
  2276. 2000-05-27  drscholl  <drscholl@users.sourceforge.net>
  2277.  
  2278.     * Makefile.in, channel.c, main.c, opennap.h, part_channel.c, privmsg.c, synch.c:
  2279.     added missing headers for clean compile with debug turned off
  2280.  
  2281.     channel ops can now be specified in the `channels' file.
  2282.  
  2283.     the channels file is now written out when opennap exits
  2284.  
  2285.     * ban.c, network.c:
  2286.     use nlogerr() in bind_interface()
  2287.  
  2288.     * server_connect.c:
  2289.     complete_connect() should abort if con->destroy is already set because the
  2290.     error will have been cleared and check_status() will report no error
  2291.  
  2292. 2000-05-26  drscholl  <drscholl@users.sourceforge.net>
  2293.  
  2294.     * network.c:
  2295.     use inet_addr() to detect dot-quad format hostnames since gethostbyname() is
  2296.     unreliable under win95
  2297.  
  2298.     * README, channel.c, configure, configure.in, handler.c, join.c, kick.c, list_users.c, login.c, main.c, napster.txt, opennap.h, part_channel.c, privmsg.c, public.c, serverlib.c, synch.c, topic.c:
  2299.     added support for channel operators
  2300.  
  2301. 2000-05-25  drscholl  <drscholl@users.sourceforge.net>
  2302.  
  2303.     * buffer.c:
  2304.     fixed crash when opennap is compiled with zlib and linking to a server with
  2305.     compression turned off
  2306.  
  2307.     * ChangeLog, NEWS, ban.c:
  2308.     fixed spelling error of Connection in ban.c
  2309.  
  2310.     updated ChangeLog
  2311.  
  2312.     * config.c, privmsg.c:
  2313.     fixes to compile cleanly with debugging off
  2314.  
  2315. 2000-05-24  drscholl  <drscholl@users.sourceforge.net>
  2316.  
  2317.     * napster.txt:
  2318.     updated spec wrt to the login messages
  2319.  
  2320.     * README, TODO, handler.c, opennap.h, usermode.c:
  2321.     changed user_mode() to user_mode_cmd() to avoid conflict with the
  2322.     user_mode macro defined in <asm/ptrace.h> under Linux.  This was causing
  2323.     problems under LinuxPPC.
  2324.  
  2325.     * list_users.c:
  2326.     allow * to be specified for the server in global_user_list() to match users
  2327.     on all servers (for use with the optional flags)
  2328.  
  2329.     * Makefile.am, Makefile.in, buffer.c, config.c, handler.c, init.c, list_users.c, main.c, network.c, opennap.h, remove_connection.c, server_login.c:
  2330.     added `l' flag to global_user_list() to match leeches
  2331.  
  2332.     rewrote global_user_list_cb() because it did not work for multiple flags
  2333.  
  2334.     fixed connect() failure under win32 (linking now works!)
  2335.  
  2336.     fixed to bypass calls to zlib when the compression level is 0 since the
  2337.     windows version is not complied with zlib at all.
  2338.  
  2339.     * Makefile.am, Makefile.in:
  2340.     fixed makefile.am to add logchk and remove README.WIN32 and README.UNIX
  2341.  
  2342.     * logchk: added logchk script
  2343.  
  2344.     * README.WIN32, TODO:
  2345.     removed README.WIN32
  2346.  
  2347.     MISSING LOG ENTRIES:
  2348.  
  2349.     fixed bug in public() where the server should not use `tag' to send the
  2350.     message to the cl ients since the server uses 403 instead of 402
  2351.  
  2352.     added napchk script from wolf
  2353.  
  2354.     added -b command line option to run opennap in the background.
  2355.     $config_dir/log is opened as stdout to catch output from the process.
  2356.  
  2357.     the pid is now stored in $config_dir/pid when opennap starts up to
  2358.     facilitate external scripts to restart it when it dies
  2359.  
  2360.     configure now checks for mlockall()
  2361.  
  2362.     split Win32 and Unix installation notes into separate files for clarity
  2363.  
  2364.     updated TODO file
  2365.  
  2366.     the global MD5 hash table should not be compiled in when RESUME is
  2367.     undefined, and the garbage collection should not be scheduled (was causing a
  2368.     crash in the win32 build)
  2369.  
  2370.     ignore search matches when both parties are firewalled
  2371.  
  2372.     added README.WIN32 and README.UNIX to EXTRA_DIST
  2373.  
  2374.     check for valid (>0) file size when adding files
  2375.  
  2376.     privileged users should see who send publics and emotes even when other
  2377.     users are cloaked.
  2378.  
  2379.     Current_Time needs to be set in mkpass.c prior to calling init_random()
  2380.  
  2381.     corrected mispelling of 'Foreward' in napster.txt
  2382.  
  2383.     * join.c, login.c:
  2384.     added $ to the list of characters not allowed in nick or channel names.
  2385.     many clients use this character to denote a variable
  2386.  
  2387.     * README.WIN32, init.c:
  2388.     need <limits.h> for _POSIX_PATH_MAX
  2389.  
  2390.     * README, README.UNIX, README.WIN32:
  2391.     rewrote installation instructions to reflect the new setup utility
  2392.  
  2393.     * Makefile.am, Makefile.in, opennap.dsw, opennap.opt, setup.c, setup.dsp:
  2394.     added setup utility
  2395.  
  2396. 2000-05-23  drscholl  <drscholl@users.sourceforge.net>
  2397.  
  2398.     * Makefile.in, NEWS, public.c:
  2399.     fixed bug in public() where the server should not use `tag' to send the
  2400.     message to the cl ients since the server uses 403 instead of 402
  2401.  
  2402.     MISSING LOG ENTRIES:
  2403.  
  2404.     added napchk script from wolf
  2405.  
  2406.     added -b command line option to run opennap in the background.
  2407.     $config_dir/log is opened as stdout to catch output from the process.
  2408.  
  2409.     the pid is now stored in $config_dir/pid when opennap starts up to
  2410.     facilitate external scripts to restart it when it dies
  2411.  
  2412.     configure now checks for mlockall()
  2413.  
  2414.     split Win32 and Unix installation notes into separate files for clarity
  2415.  
  2416.     updated TODO file
  2417.  
  2418.     the global MD5 hash table should not be compiled in when RESUME is
  2419.     undefined, and the garbage collection should not be scheduled (was causing a
  2420.     crash in the win32 build)
  2421.  
  2422.     ignore search matches when both parties are firewalled
  2423.  
  2424.     added README.WIN32 and README.UNIX to EXTRA_DIST
  2425.  
  2426.     check for valid (>0) file size when adding files
  2427.  
  2428.     privileged users should see who send publics and emotes even when other
  2429.     users are cloaked.
  2430.  
  2431.     Current_Time needs to be set in mkpass.c prior to calling init_random()
  2432.  
  2433.     corrected mispelling of 'Foreward' in napster.txt
  2434.  
  2435.     * Makefile.am, napchk:
  2436.     added napchk script from wolf
  2437.  
  2438.     MISSING LOG ENTRIES:
  2439.  
  2440.     added -b command line option to run opennap in the background.
  2441.     $config_dir/log is opened as stdout to catch output from the process.
  2442.  
  2443.     the pid is now stored in $config_dir/pid when opennap starts up to
  2444.     facilitate external scripts to restart it when it dies
  2445.  
  2446.     configure now checks for mlockall()
  2447.  
  2448.     split Win32 and Unix installation notes into separate files for clarity
  2449.  
  2450.     updated TODO file
  2451.  
  2452.     the global MD5 hash table should not be compiled in when RESUME is
  2453.     undefined, and the garbage collection should not be scheduled (was causing a
  2454.     crash in the win32 build)
  2455.  
  2456.     ignore search matches when both parties are firewalled
  2457.  
  2458.     added README.WIN32 and README.UNIX to EXTRA_DIST
  2459.  
  2460.     check for valid (>0) file size when adding files
  2461.  
  2462.     privileged users should see who send publics and emotes even when other
  2463.     users are cloaked.
  2464.  
  2465.     Current_Time needs to be set in mkpass.c prior to calling init_random()
  2466.  
  2467.     corrected mispelling of 'Foreward' in napster.txt
  2468.  
  2469.     * login.c:
  2470.     fixed bug in login.c where it should have tested for
  2471.     MSG_CLIENT_LOGIN_REGISTER instead of MSG_CLIENT_REGISTER.  this was causing
  2472.     automatic registration of all users who weren't already registered.
  2473.  
  2474.     * Makefile.am, Makefile.in:
  2475.     added README.WIN32 and README.UNIX to EXTRA_DIST
  2476.  
  2477.     * Makefile.in, list_users.c, opennap.h, whois.c:
  2478.     added support for the global user list (831) command
  2479.  
  2480. 2000-05-22  drscholl  <drscholl@users.sourceforge.net>
  2481.  
  2482.     * sample.conf:
  2483.     updated sample configuration file with new `server_ports' variable
  2484.  
  2485.     * config.c, configure, configure.in, main.c, network.c, opennap.h, resume.c:
  2486.     support for resume is now turned off by default, use configure
  2487.     --enable-resume to turn it back on
  2488.  
  2489.     added support for a list type configuration variable
  2490.  
  2491.     boolean config vars could not be set by default or reset via the client
  2492.  
  2493.     removed server_port configuration variable
  2494.  
  2495.     created new list configuration variable `server_ports' which contains a
  2496.     space separated list of ports to listen on for incoming connections
  2497.  
  2498.     * server_connect.c, serverlib.c:
  2499.     need to check for null return from next_arg() in kill_server() to prevent
  2500.     segfault
  2501.  
  2502.     * add_file.c:
  2503.     check for valid (>0) file size when adding files
  2504.  
  2505.     * public.c:
  2506.     privileged users should see who send publics and emotes even when other
  2507.     users are cloaked.
  2508.  
  2509. 2000-05-21  drscholl  <drscholl@users.sourceforge.net>
  2510.  
  2511.     * public.c:
  2512.     fixed problem with emote() not working over server links
  2513.  
  2514.     * init.c, main.c:
  2515.     fixes to compile under os/2
  2516.  
  2517.     * README, README.UNIX, README.WIN32:
  2518.     split Win32 and Unix installation notes into separate files for clarity
  2519.  
  2520.     * README, mkpass.c, napster.txt:
  2521.     Current_Time needs to be set in mkpass.c prior to calling init_random()
  2522.  
  2523.     corrected mispelling of 'Foreward' in napster.txt
  2524.  
  2525. 2000-05-19  drscholl  <drscholl@users.sourceforge.net>
  2526.  
  2527.     * TODO, util.c:
  2528.     print_args() should not print to stderr so that when in background mode it
  2529.     will get saved in the log file
  2530.  
  2531.     * Makefile.in, config.c, configure, configure.in, init.c, main.c, opennap.h, util.c:
  2532.     added -b command line option to run opennap in the background.
  2533.     $config_dir/log is opened as stdout to catch output from the process.
  2534.  
  2535.     the pid is now stored in $config_dir/pid when opennap starts up to
  2536.     facilitate external scripts to restart it when it dies
  2537.  
  2538.     configure now checks for mlockall()
  2539.  
  2540. 2000-05-18  drscholl  <drscholl@users.sourceforge.net>
  2541.  
  2542.     * TODO, main.c:
  2543.     updated TODO file
  2544.  
  2545.     the global MD5 hash table should not be compiled in when RESUME is
  2546.     undefined, and the garbage collection should not be scheduled (was causing a
  2547.     crash in the win32 build)
  2548.  
  2549.     * search.c:
  2550.     ignore search matches when both parties are firewalled
  2551.  
  2552. 2000-05-15  drscholl  <drscholl@users.sourceforge.net>
  2553.  
  2554.     * ChangeLog, NEWS, README, login.c, opennap.dsp, opennap.h, opennap.opt:
  2555.     updated build for Win32 platforms
  2556.  
  2557.     * Makefile.in, kick.c:
  2558.     the reason in clear_channel() is not quoted from the client, so use
  2559.     next_arg() instead of split_line() to parse the input
  2560.  
  2561. 2000-05-13  drscholl  <drscholl@users.sourceforge.net>
  2562.  
  2563.     * configure.in, init.c, join.c, login.c, main.c, opennap.h, resume.c, sample.conf, Makefile.in, README, add_file.c, config.c, configure:
  2564.     added --disable-resume to turn off server support for resume searching
  2565.  
  2566.     added `lock_memory' configuration variable to prevent the process from being
  2567.     swapped
  2568.  
  2569.     added `registered_only' configuration variable to only allow registered
  2570.     users to log in
  2571.  
  2572.     added `auto_register' configuration variable to automatically register users
  2573.     upon login
  2574.  
  2575. 2000-05-09  drscholl  <drscholl@users.sourceforge.net>
  2576.  
  2577.     * add_file.c, config.c, handler.c, opennap.h, privmsg.c, util.c:
  2578.     added command 870 for new share file supported in beta6
  2579.  
  2580.     next_arg() now handles quoted parameters
  2581.  
  2582.     * server_login.c:
  2583.     get_server_pass() should return `server_password' if no local password is
  2584.     specified
  2585.  
  2586.     * ChangeLog:
  2587.     updated the ChangeLog file with recent modifications.
  2588.  
  2589.     failed log message from the previous commit:
  2590.  
  2591.     modified get_server_pass() to optionally return the local password to use
  2592.     (if specified in the config file) to avoid parsing the file twice.
  2593.  
  2594.     * server_login.c:
  2595.     modified get_server_pass() to optionally return the local password to use
  2596.     (if specified in the config file) to avoid parsing the file twice.
  2597.  
  2598.     * Makefile.am, Makefile.in, README, server_login.c, textdb.c, textdb.h:
  2599.     rewrote get_server_pass() to use its own simple parsing routine to fetch the
  2600.     password instead of using the textdb_*() functions.
  2601.  
  2602.     added support for using different server passwords with each linked server
  2603.     rather than always using the value of `server_password'.  if a local
  2604.     password is specified in the `servers' it will override the default
  2605.     password.
  2606.  
  2607.     * napster.txt, opennap.h, privmsg.c:
  2608.     added missing 325 server response when the user to ignore is already ignored
  2609.  
  2610. 2000-05-08  drscholl  <drscholl@users.sourceforge.net>
  2611.  
  2612.     * handler.c, kick.c, napster.txt, network.c, opennap.h, privmsg.c, server_links.c:
  2613.     added entries for the server-side ignore list to the handler array.
  2614.  
  2615.     update napster.txt with the numerics for server-side ignore
  2616.  
  2617.     kick() should call notify_mods() prior to part_channel() in case the channel
  2618.     is destroyed by kicking the last user out (Greg Prosser
  2619.     <greg@snickers.org>).
  2620.  
  2621.     set_limit() should just warn if FD_SETSIZE is smaller than the set hard
  2622.     limit for max file descriptors.
  2623.  
  2624. 2000-05-03  drscholl  <drscholl@users.sourceforge.net>
  2625.  
  2626.     * TODO, change.c, download.c, hotlist.c, join.c, opennap.h, part.c, part_channel.c, ping.c, privmsg.c, public.c, remove_connection.c, serverlib.c, usermode.c, util.c:
  2627.     added server-side ignore/unignore functionality.  this is not able to be
  2628.     called by the user yet since the numerics are unknown
  2629.  
  2630.     changed join/part to show the joins/parts to privileged users regardless of
  2631.     the cloak status
  2632.  
  2633.     added CLOAK usermode to en/disable the server notifications
  2634.  
  2635.     * handler.c, init.c, join.c, login.c, main.c, napster.txt, opennap.h, part.c, public.c, util.c:
  2636.     increased hash table size to 521 for users and hotlist for better
  2637.     performance with many users
  2638.  
  2639.     public() and emote() now find the channel by looking through the users
  2640.     joined channel list with find_channel() instead of calling hash_lookup()
  2641.  
  2642.     removed many extraneous log() messages about command parsing errors
  2643.  
  2644.     switched to using ISUSER(user->con) instead of testing user->local
  2645.  
  2646.     * hash.c, sample.conf:
  2647.     replace hash function with the `ElfHash' used in the ELF loader since it
  2648.     produces MANY less collisions
  2649.  
  2650. 2000-04-30  drscholl  <drscholl@users.sourceforge.net>
  2651.  
  2652.     * README, handler.c, opennap.h, server_links.c:
  2653.     changed numeric for server ping to 750 to match the official servers
  2654.  
  2655.     * change.c, level.c:
  2656.     setlinespeed didn't actually change the user's speed in the USER struct
  2657.  
  2658.     * login.c: exempt mods+ from server bans
  2659.  
  2660.     * Makefile.am, Makefile.in, TODO, change.c, handler.c, muzzle.c, napster.txt, opennap.h, unmuzzle.c:
  2661.     consolodated the muzzle/unmuzzle code into one function
  2662.  
  2663.     extended muzzle/unmuzzle to allow change for a registered user that is not
  2664.     currently logged in
  2665.  
  2666. 2000-04-28  drscholl  <drscholl@users.sourceforge.net>
  2667.  
  2668.     * ChangeLog:
  2669.     updated ChangeLog with recent activity
  2670.  
  2671.     missing log entries from last commit:
  2672.  
  2673.     * change.c, join.c, public.c, whois.c:
  2674.     publics and emotes should not be cloaked when the channel level is mod+
  2675.  
  2676.     whois should show Cloaked state for privileged users
  2677.  
  2678.     whois should hide channel membership for nonprivileged users when they
  2679.     perform a whois on a cloaked user
  2680.  
  2681.     added a period at the end of the notification of cloak status.
  2682.  
  2683.     * change.c, level.c, login.c, muzzle.c, opennap.h, unmuzzle.c, userdb.c:
  2684.     changed muzzle field in USERDB to flags and use the ON_* bitmasks instead
  2685.     of individual fields.
  2686.  
  2687.     cloak state is now saved in the userdb and restored when the user logs back
  2688.     in.
  2689.  
  2690.     * README, handler.c, opennap.h, server_links.c:
  2691.     added ping_server() command (10116)
  2692.  
  2693. 2000-04-27  drscholl  <drscholl@users.sourceforge.net>
  2694.  
  2695.     * README, privmsg.c:
  2696.     added cloak to the list of operserv commands
  2697.  
  2698.     * Makefile.in, change.c, kick.c, kill_user.c, list_users.c, muzzle.c, opennap.h, serverlib.c, unmuzzle.c:
  2699.     kill, muzzle, unmuzzle and kick should not display the issuer's nick if they
  2700.     are cloaked
  2701.  
  2702.     cloak() should call notify_mods()
  2703.  
  2704.     * README, TODO, browse.c, change.c, channel.c, handler.c, join.c, muzzle.c, napster.txt, opennap.h, part_channel.c, patchnap.c, privmsg.c, public.c, whois.c:
  2705.     updated napster.txt with new findings from the linux nap v1.0 beta
  2706.  
  2707.     changed numeric for the kick command to 829, per nap v1.0 beta
  2708.  
  2709.     changed numerics for channel ban, unban and list per nap v1.0 beta
  2710.  
  2711.     renamed chanban, chanunban, chanbanlist operserv commands to cban, cunban
  2712.     and cbanlist.
  2713.  
  2714.     added cbanclear to operserv commands
  2715.  
  2716.     added the clear channel ban list command (424)
  2717.  
  2718.     added the cloak user command (625).  for cloaked users, parts/joins are not
  2719.     sent and public messages show up as being from `Operator' instead of the
  2720.     real nick that sent it.
  2721.  
  2722.     added stub routine for global user list.
  2723.  
  2724.     updated patchnap.c for linux nap v1.0 beta
  2725.  
  2726.     * FAQ, README, privmsg.c:
  2727.     added chanban and chanunban commands to operserv
  2728.  
  2729.     added FAQ about max_browse_result/client_queue_length
  2730.  
  2731.     * Makefile.in, channel.c:
  2732.     fixed channel ban notify_mods() messages which were missing channel names
  2733.  
  2734.     * README, ban.c, channel.c, configure, configure.in, handler.c, join.c, opennap.h, serverlib.c, util.c:
  2735.     added first cut at channel bans
  2736.  
  2737. 2000-04-26  drscholl  <drscholl@users.sourceforge.net>
  2738.  
  2739.     * Makefile.in, login.c, muzzle.c:
  2740.     changed notification messages in login() wrt restoring muzzled state to
  2741.     match those in the muzzle() command.
  2742.  
  2743.     fixed muzzle() to allow for automatic server muzzling by avoiding a call to
  2744.     pop_user(), which assumes a real user issued the command
  2745.  
  2746.     * napster.txt:
  2747.     updated protocol spec with additional info from Thomas van der Heijden
  2748.     <thom@bart.nl>
  2749.  
  2750.     * whois.c:
  2751.     consolodated the whois response formation instead of separate commands for
  2752.     each case.  now normal users can see whether another user is muzzled
  2753.  
  2754.     * login.c, muzzle.c, opennap.h, unmuzzle.c, userdb.c:
  2755.     muzzle status is now saved in the user db so that it gets restored when the
  2756.     user logs in again
  2757.  
  2758.     * mkpass.c, opennap.h, usermode.c, util.c, Makefile.in, announce.c, configure, configure.in, handler.c, init.c, main.c:
  2759.     added WALLOP user mode to disable wallops
  2760.  
  2761.     use srand() and rand() to generate random numbers instead of hashing input
  2762.     data with md5.  the md5 code seems to generate lots of unaligned memory
  2763.     accesses on alpha, and it really isnt critical to have cryptographic quality
  2764.     random numbers.  it should also reduce the cpu usage since it no longer has
  2765.     to hash all input.
  2766.  
  2767.     * join.c:
  2768.     added support for automatic creation of rollover channels for predefined
  2769.     channels
  2770.  
  2771.     * login.c:
  2772.     check for get_level() == -1 in reginfo()
  2773.  
  2774. 2000-04-25  drscholl  <drscholl@users.sourceforge.net>
  2775.  
  2776.     * main.c, opennap.h:
  2777.     Num_Gigs should be unsigned int to prevent a negative count when going about
  2778.     2TB library size.
  2779.  
  2780. 2000-04-24  drscholl  <drscholl@users.sourceforge.net>
  2781.  
  2782.     * TODO, userdb.c:
  2783.     check for valid level when reading the userdb from disk
  2784.  
  2785. 2000-04-20  drscholl  <drscholl@users.sourceforge.net>
  2786.  
  2787.     * ban.c, synch.c:
  2788.     fixed loading and saving of bans to get the correct ban type
  2789.  
  2790. 2000-04-19  drscholl  <drscholl@users.sourceforge.net>
  2791.  
  2792.     * Makefile.in, opennap.dsp, opennap.opt:
  2793.     updated win32 projects files for 0.25
  2794.  
  2795. 2000-04-18  drscholl  <drscholl@users.sourceforge.net>
  2796.  
  2797.     * ChangeLog, Makefile.am:
  2798.     post 0.25 release commit
  2799.  
  2800.     forgot to add sample.channels to EXTRA_DIST in Makefile.am
  2801.  
  2802.     * NEWS, README, TODO, configure, sample.conf:
  2803.     final changes for 0.25 release
  2804.  
  2805.     * ChangeLog, channel.c, configure.in, login.c, opennap.h, sample.channels, search.c:
  2806.     added "live" to the list of words to ignore in searches
  2807.  
  2808.     restored full ChangeLog
  2809.  
  2810.     updated version to 0.25
  2811.  
  2812.     allow the channels file to contain blank lines
  2813.  
  2814. 2000-04-17  drscholl  <drscholl@users.sourceforge.net>
  2815.  
  2816.     * README, ban.c, sample.conf:
  2817.     fixed ban() not to check for permission from commands received from other
  2818.     servers so that syncing will work properly
  2819.  
  2820.     removed old entries from sample.conf
  2821.  
  2822.     * muzzle.c, napster.txt, sample.channels, search.c, server_login.c, unmuzzle.c:
  2823.     muzzle() should error if user is already muzzled
  2824.  
  2825.     unmuzzle() should error if user is not muzzled
  2826.  
  2827.     updated napster.txt to reflect the new use of 401 (part)
  2828.  
  2829.     added "f" to the list of words to ignore in searches
  2830.  
  2831.     avoid infinite loop in mark_links() by checking for a link already marked
  2832.     before recursing on it
  2833.  
  2834.     added sample.channels file
  2835.  
  2836. 2000-04-15  drscholl  <drscholl@users.sourceforge.net>
  2837.  
  2838.     * Makefile.am, Makefile.in, ban.c, channel.c, config.c, init.c, main.c, motd.c, opennap.h, part_channel.c, sample.conf, server_login.c, userdb.c:
  2839.     added `channels' config file to predefine persistent channels
  2840.  
  2841.     removed user_db_path, server_db_path and motd_path config variables.
  2842.  
  2843.     added config_dir variable to control where opennap should look for the
  2844.     users, servers, motd, bans and channels files
  2845.  
  2846.     * Makefile.in, login.c:
  2847.     fixed bug in bad password error message which caused a crash
  2848.  
  2849. 2000-04-14  drscholl  <drscholl@users.sourceforge.net>
  2850.  
  2851.     * Makefile.am:
  2852.     added usermode.c to compile list
  2853.  
  2854.     * ChangeLog:
  2855.     updated ChangeLog with recent entries
  2856.  
  2857.     * level.c:
  2858.     allow users to demote their user level again
  2859.  
  2860.     * level.c:
  2861.     fixed bug in new level() code where an elite could not set another elite to
  2862.     a lower level
  2863.  
  2864.     * search.c:
  2865.     added "downloads" to the list of words to ignore on searches
  2866.  
  2867. 2000-04-13  drscholl  <drscholl@users.sourceforge.net>
  2868.  
  2869.     * README, announce.c, ban.c, handler.c, login.c, opennap.h, util.c:
  2870.     added remote_notify_mods() command to allow a server to broadcast a message
  2871.     to remote mods
  2872.  
  2873.     server will no longer delink when a bad command is received.
  2874.  
  2875.     user and host ban messages are now sent to all mods on all servers
  2876.  
  2877.     all mods+ are notified when a user fails to log in as a privileged user
  2878.  
  2879.     * join.c, level.c, login.c:
  2880.     don't allow % in either nicknames or channel names for safety
  2881.  
  2882.     fixed bug in format for log() message in channel_level() when a user tries
  2883.     to set a channel to a level above their own
  2884.  
  2885.     fixed bug in level() where the notification about the level change was sent
  2886.     to the user who issued the change instead of the target user
  2887.  
  2888.     * config.c, login.c, main.c, opennap.h, userdb.c:
  2889.     removed Check_Expire global variable
  2890.  
  2891.     added nick expiration to dump_userdb()
  2892.  
  2893.     * ban.c, level.c, main.c, search.c:
  2894.     allow the setuserlevel command to work when the user is registered but not
  2895.     logged in
  2896.  
  2897.     set SO_REUSEADDR on the stats port
  2898.  
  2899. 2000-04-12  drscholl  <drscholl@users.sourceforge.net>
  2900.  
  2901.     * search.c: added additional debugging checks
  2902.  
  2903.     * remove_connection.c, whois.c:
  2904.     hash_free() was not called to free a local user's list of files
  2905.  
  2906.     * kick.c, napster.txt:
  2907.     clear_channel() needs to be careful about walking the list of users in a
  2908.     channel since the call to part_channel() could free the current list pointer
  2909.  
  2910.     * config.c, handler.c, main.c, opennap.h, sample.conf, util.c:
  2911.     added max_command_length config var to control the max allowed length of a
  2912.     client command
  2913.  
  2914.     * ban.c, login.c, muzzle.c, unmuzzle.c, whois.c:
  2915.     unban had a bug where it would tell you the ban was not found even if it
  2916.     was.
  2917.  
  2918.     muzzle and unmuzzle should optionally take a reason argument.
  2919.  
  2920.     whois should display Muzzled instead of Active for muzzled users
  2921.  
  2922.     * config.c, remove_connection.c, sample.conf:
  2923.     no need to null out the uopt->files member in remove_connection()
  2924.  
  2925.     changed default value of collect_interval to 300
  2926.  
  2927.     added max_browse_result to sample.conf
  2928.  
  2929. 2000-04-11  drscholl  <drscholl@users.sourceforge.net>
  2930.  
  2931.     * change.c, login.c, search.c:
  2932.     the reason for a nuke is not required
  2933.  
  2934.     added 'home' to the list of words to ignore in searches
  2935.  
  2936.     * opennap.h, remove_file.c, serverlib.c, topic.c, upload_complete.c, userdb.c, usermode.c, whois.c, add_file.c, browse.c, change.c, download.c, free_user.c, level.c, login.c:
  2937.     moved the list of shared files into the USEROPT struct since it only needs
  2938.     to be present for locally connected users
  2939.  
  2940.     change_pass(), alter_pass() and nuke() should releay the command to other
  2941.     servers before checking if the account is locally registered, since the
  2942.     userdb may not be entirely replicated
  2943.  
  2944.     userdb_dump() sould unlink() User_Db_Path before calling rename() since it
  2945.     causes an error under win32
  2946.  
  2947.     notify_mods() is called with new usermode TOPIC when a topic of a channel
  2948.     has been changed
  2949.  
  2950.     compacted whois() to use the same snprintf() call for level>=moderator
  2951.  
  2952.     * change.c, level.c, login.c, serverlib.c, usermode.c:
  2953.     change_pass() and change_email() need to check for bad user input
  2954.  
  2955.     added include files to prevent compiler warnings
  2956.  
  2957.     * login.c:
  2958.     register_user() did not call generate_pass() to generate the md5 password
  2959.  
  2960.     * change.c:
  2961.     alter password command was sending the md5-hashed password instead of the
  2962.     raw password
  2963.  
  2964.     * usermode.c:
  2965.     usermode.c needs stdio.h for snprintf()
  2966.  
  2967.     * handler.c, resume.c, search.c:
  2968.     removed extraneous log messages
  2969.  
  2970.     ignore the word "download" in searches
  2971.  
  2972. 2000-04-10  drscholl  <drscholl@users.sourceforge.net>
  2973.  
  2974.     * search.c:
  2975.     added "download" to the list of words to ignore when searching
  2976.  
  2977.     * search.c:
  2978.     added new words to ignore in the search table: scour, media, agent, on,
  2979.     stuff
  2980.  
  2981.     * usermode.c:
  2982.     adding missing PORT string in User_Modes
  2983.  
  2984.     initial mode should be set from current user mode in user_mode()
  2985.  
  2986.     * kick.c, usermode.c:
  2987.     fixed compilation warnings for usermode code
  2988.  
  2989.     * usermode.c:
  2990.     added new function handler user_mode()
  2991.  
  2992.     * Makefile.in, ban.c, change.c, download.c, handler.c, hotlist.c, join.c, kick.c, kill_user.c, level.c, login.c, muzzle.c, opennap.h, privmsg.c, remove_connection.c, server_connect.c, server_login.c, serverlib.c, unmuzzle.c:
  2993.     patch from colten edwards to allow ircd-like user levels to enable or
  2994.     disable many server messages to privileged users
  2995.  
  2996.     * ChangeLog, NEWS, sample.conf, sample.users:
  2997.     final updates for 0.24 release
  2998.  
  2999.     * README, add_file.c, search.c:
  3000.     ignore "2" in filenames since it is a frequent occurance
  3001.  
  3002.     * free_user.c:
  3003.     update the last seen time for registered nicks when a user logs off
  3004.  
  3005.     * login.c:
  3006.     server should send a KILL when it detects a remote user with an invalid
  3007.     nick
  3008.  
  3009.     * change.c, serverlib.c:
  3010.     change_email() did not prefix the server->server messgae with the nick of
  3011.     the user who issued the command
  3012.  
  3013.     nosuchchannel() and unparsable() now check for ISUSER() to avoid the need to
  3014.     check every time those functions need to be called
  3015.  
  3016.     * change.c:
  3017.     the server-server message for change_pass() did not contain the user who
  3018.     changed the password
  3019.  
  3020. 2000-04-09  drscholl  <drscholl@users.sourceforge.net>
  3021.  
  3022.     * handler.c, join.c, kick.c, opennap.h:
  3023.     added the clear channel (820) command
  3024.  
  3025. 2000-04-08  drscholl  <drscholl@users.sourceforge.net>
  3026.  
  3027.     * handler.c:
  3028.     handle_connection() should send the USER_SHARING message prior to execution
  3029.     of the callback so that the proper information is sent to users when the
  3030.     user joins a channel for the first time.
  3031.  
  3032.     * free_user.c, handler.c, init.c:
  3033.     Local_Files was not decremented in free_user()
  3034.  
  3035.     added sig handler to call md_cleanup() on SIGUSR1
  3036.  
  3037.     * main.c, server_connect.c:
  3038.     fixed core in update_stats() on new log message for number of local files
  3039.  
  3040.     login timer was not set on server connections
  3041.  
  3042.     * README, handler.c, privmsg.c:
  3043.     added the config and reconfig commands to OperServ
  3044.  
  3045.     updated comment above the share/unshare termination detection to indicate
  3046.     that if a user does not issue any more commands after sharing/unsharing,
  3047.     the information will not get passed to the peer servers
  3048.  
  3049.     * add_file.c, handler.c, opennap.h, remove_file.c:
  3050.     add_file()/remove_file() now set a flag in the USER struct.
  3051.     handle_connection() then checks for the end of the share/unshare messags
  3052.     from the client by checking for a command other than share/unshare and
  3053.     passes the final results to the peer servers
  3054.  
  3055. 2000-04-07  drscholl  <drscholl@users.sourceforge.net>
  3056.  
  3057.     * add_file.c, main.c, opennap.h, remove_file.c, resume.c:
  3058.     server now keeps track of how many files are available from local users
  3059.     and displays this info in update_stats()
  3060.  
  3061.     removed prototypes for outdated functions from opennap.h
  3062.  
  3063.     * add_file.c, join.c, kick.c, login.c, main.c, muzzle.c, napster.txt, opennap.h, remove_file.c, serverlib.c, synch.c:
  3064.     created new util functions nosuchchannel() and unparsable()
  3065.  
  3066.     the optional reason in the muzzle command should be quoted if present
  3067.  
  3068.     the optional reason in the kick command should be quoted if present
  3069.  
  3070.     channel_limit() now only checks for privilege for local users so that the
  3071.     limits can be synced by servers when linking
  3072.  
  3073.     * README, userdb.c, util.c:
  3074.     updated installation instructions
  3075.  
  3076.     userdb_init() should only rewind() if the first line doesn't contain the
  3077.     version information
  3078.  
  3079.     log() no longer prefixes messages with `opennap: '
  3080.  
  3081.     * Makefile.am, Makefile.in, buffer.c, handler.c, main.c, mkpass.c, mkpass.dsp, network.c, opennap.dsp, opennap.dsw, opennap.h, opennap.opt, opennap.plg, serverlib.c, snprintf.c, util.c:
  3082.     added mkpass project to win32 workspace
  3083.  
  3084.     created new macro N_ERRNO to be used in place of error when checking error
  3085.     conditions from socket related function calls.  win32 uses h_errno so this
  3086.     should be used as a wrapper to make the code cleaner
  3087.  
  3088.     added new macro nlogerr() which is like logerr() but should be used when
  3089.     priting errors from socket related functions
  3090.  
  3091.     * TODO, login.c:
  3092.     major cleanup of login().  password should not be checked until after the
  3093.     check for a user already logged in to prevent password guessing
  3094.  
  3095.     * Makefile.in, kick.c, main.c, search.c:
  3096.     missing channel name in the notify_mods() call in kick()
  3097.  
  3098.     ignore "rock" and "new" in search strings
  3099.  
  3100.     * NEWS, README, config.c, configure, configure.in, main.c, opennap.h, sample.conf, search.c:
  3101.     updated version number to 0.24
  3102.  
  3103.     added login timeout detection.  default is to close client connections if
  3104.     they have no logged in within 60 seconds
  3105.  
  3106.     added "me", "to" and "rock" to the list of words to ignore in the search
  3107.     table since over 5000 entries were detected
  3108.  
  3109. 2000-04-06  drscholl  <drscholl@users.sourceforge.net>
  3110.  
  3111.     * change.c, opennap.h:
  3112.     allow nuke_user() to take an optional reason for the revocation
  3113.  
  3114.     * login.c:
  3115.     delay setting the user's level from the db until after the notify_mods()
  3116.     call so that the user is not notified twice of their change in status.
  3117.  
  3118.     * Makefile.am, Makefile.in, config.c, handler.c, join.c, kick.c, list_channels.c, login.c, main.c, napster.txt, opennap.h, part.c, privmsg.c, sample.conf, server_usage.c:
  3119.     added kick.c for the kick() function
  3120.  
  3121.     added channel limit (826) command to specify the max users allowed in a
  3122.     channel.
  3123.  
  3124.     added full channnel list (827) command to show all channels with min level
  3125.     and user limit
  3126.  
  3127.     made the stats command accessable to normal users
  3128.  
  3129.     fixed find_handler() search that could end up in an infinite loop in certain
  3130.     cases.
  3131.  
  3132.     * TODO, login.c, napster.txt:
  3133.     updated TODO file
  3134.  
  3135.     fix for coredump when a nonregistered user attempts to log in
  3136.  
  3137.     updated napster.txt with new protocol findings
  3138.  
  3139. 2000-04-05  drscholl  <drscholl@users.sourceforge.net>
  3140.  
  3141.     * browse.c, main.c:
  3142.     data.max was not initialized to 0 in browse() causing a problem with
  3143.     browsing users on the same server
  3144.  
  3145.     * login.c, main.c:
  3146.     reorganized the login() routine to allows privileged users to bypass the
  3147.     max_connections restriction
  3148.  
  3149.     should check for -1 instead of EOF in getopt() test
  3150.  
  3151.     * add_file.c, search.c:
  3152.     modification to use the soundex hash as the key for the File_Table.  This
  3153.     should decrase the amount of memory required for searching at the expense of
  3154.     a little cpu, but should not affect the search results since it still uses
  3155.     the same token based scheme once the smallest bin has been found.
  3156.  
  3157. 2000-04-04  drscholl  <drscholl@users.sourceforge.net>
  3158.  
  3159.     * main.c:
  3160.     update_stats() now prints out the number of entries in the File_Table hash
  3161.     table to get an idea of its size
  3162.  
  3163.     * mkpass.c, search.c, serverlib.c:
  3164.     added copyright notice to mkpass.c and serverlib.c
  3165.  
  3166.     tokenize() should ignore the words "of", "you" and "mp3's" because of the
  3167.     high use of these words (>10,000 hits).
  3168.  
  3169. 2000-04-03  drscholl  <drscholl@users.sourceforge.net>
  3170.  
  3171.     * mkpass.c, serverlib.c:
  3172.     added new file mkpass.c to generate a md5 password
  3173.  
  3174.     added new file serverlib.c for functions that reference opennap globals
  3175.  
  3176.     * Makefile.am, Makefile.in, change.c, level.c, login.c, main.c, opennap.h, userdb.c, util.c:
  3177.     added support for md5 passwords for user db
  3178.  
  3179. 2000-03-31  drscholl  <drscholl@users.sourceforge.net>
  3180.  
  3181.     * ban.c:
  3182.     issue a kill if we receive a login command from a remote server for a
  3183.     locally banned user
  3184.  
  3185.     * ban.c:
  3186.     check_ban() should only set con->destroy for CLASS_UNKNOWN connections
  3187.  
  3188.     * server_connect.c:
  3189.     server_login() passsed the wrong field to the is_linked() function
  3190.  
  3191.     * README:
  3192.     updated README to discuss the new OperServ feature
  3193.  
  3194.     * login.c, privmsg.c:
  3195.     added pseudo user OperServ to allow privilegded users without builtin client
  3196.     support for the opennap specific commands to be able execute them by using
  3197.     /msg opserver ...
  3198.  
  3199.     * userdb.c:
  3200.     removed check for .nuked in dump_userdb()
  3201.  
  3202.     * change.c, handler.c, login.c:
  3203.     removed unnuke() command.  nuking the account removes it permanently.
  3204.  
  3205.     fixed encapsulated() to handle bad input data
  3206.  
  3207.     * change.c, handler.c, opennap.h, userdb.c:
  3208.     added support for nuking and restoring accounts
  3209.  
  3210.     * ban.c, init.c, main.c, opennap.h:
  3211.     added load/save bans feature from colten edwards.
  3212.  
  3213.     * opennap.h, server_connect.c, server_login.c:
  3214.     added is_linked() function to check to see if a server is already linked in
  3215.     order to avoid server loops
  3216.  
  3217.     * Makefile.in, ban.c, handler.c, login.c, main.c, opennap.h:
  3218.     removed check_accept() function.  the maximum connections is now enforced by
  3219.     login() to avoid the situation where servers can't link because the number
  3220.     of client connections has exceeded the maximum
  3221.  
  3222.     accept_connection() now calls check_ban() directly
  3223.  
  3224. 2000-03-30  drscholl  <drscholl@users.sourceforge.net>
  3225.  
  3226.     * handler.c, muzzle.c, network.c, privmsg.c, public.c, search.c, server_login.c, synch.c:
  3227.     the long line truncation in public/emote needs to calculate the length based
  3228.     upon the start of the data actually sent to the client.  server->server
  3229.     messages were being truncated in the _next_ packet.
  3230.  
  3231. 2000-03-28  drscholl  <drscholl@users.sourceforge.net>
  3232.  
  3233.     * ChangeLog, NEWS, README, opennap.h:
  3234.     win32 needs _POSIX_PATH_MAX defined to compile
  3235.  
  3236.     update ChangeLog, NEWS and README for 0.23 release
  3237.  
  3238.     * public.c:
  3239.     crop publics and emotes that are longer than 128 chars rather than rejecting
  3240.     them
  3241.  
  3242.     * public.c, spyserv.c:
  3243.     don't allow public or emote commands longer than 128 chars to prevent the
  3244.     DOS attack against the windows napster client.
  3245.  
  3246.     * main.c:
  3247.     listen fd needs to be set to nonblocking so the loop over accept() doesn't
  3248.     block the server.
  3249.  
  3250.     * ban.c, login.c, main.c:
  3251.     modified accept_connection() to loop until accept() returns an error
  3252.  
  3253.     cli->destroy should be set in check_accept when max connections has been
  3254.     reached.
  3255.  
  3256. 2000-03-27  drscholl  <drscholl@users.sourceforge.net>
  3257.  
  3258.     * TODO, change.c, join.c, util.c:
  3259.     only call notify_mods() if a users data port is set to a different value
  3260.     than what is currently set to
  3261.  
  3262.     join should send a 408 back to the user than joined, and not a 406.
  3263.  
  3264.     split_line() now breaks on space, tab, cr or lf to separate words
  3265.  
  3266.     * ban.c, change.c, config.c, init.c, level.c, login.c, main.c, opennap.h, userdb.c, whois.c:
  3267.     changed user db into an memory-based hash table to improve performance.
  3268.     the user db is dumped to disk every `user_db_interval' seconds (default:
  3269.     1800)
  3270.  
  3271.     * configure, configure.in, main.c, remove_connection.c:
  3272.     remove support for poll() since it doesnt work well
  3273.  
  3274. 2000-03-26  drscholl  <drscholl@users.sourceforge.net>
  3275.  
  3276.     * ban.c, main.c:
  3277.     fixed but in main loop with select()ing fds
  3278.  
  3279.     * util.c: more fixes
  3280.  
  3281.     * main.c, util.c:
  3282.     modified add_client() to find the first empty slot in the Clients[] array
  3283.  
  3284.     * main.c:
  3285.     should 0 out the old pointer when shifting down entries to fill holes
  3286.  
  3287.     * main.c, util.c:
  3288.     moved complete_connect() call to final loop to avoid altering Num_Clients in
  3289.     the read loop
  3290.  
  3291.     * main.c, util.c:
  3292.     poll() still returns EINVAL under linux so the main loop now always shifts
  3293.     down the CONNECTION pointeres to fill all holes.
  3294.  
  3295. 2000-03-25  drscholl  <drscholl@users.sourceforge.net>
  3296.  
  3297.     * ban.c, login.c, main.c, opennap.h:
  3298.     changed ban handling to use a LIST instead of an array
  3299.  
  3300.     * buffer.c, debug.h, join.c, util.c:
  3301.     added VALID_STR() debug macro for testing memory allocated by STRDUP()
  3302.  
  3303.     validate_user() and validate_channel() should call list_validate() instead
  3304.     of just checking the first entry in the list
  3305.  
  3306.     * opennap.dsp:
  3307.     committed .dsp file for win32 build
  3308.  
  3309.     * join.c:
  3310.     fixed error message for channel_level() to be more verbose to the client
  3311.  
  3312.     * level.c, login.c:
  3313.     fixed messages about changing a user's level to be consistent
  3314.  
  3315.     * kill_user.c, server_login.c:
  3316.     corrected log messages
  3317.  
  3318.     * login.c:
  3319.     reasons for a kill should be quoted in login()
  3320.  
  3321.     * handler.c, level.c, login.c, search.c, server_login.c, synch.c, topic.c:
  3322.     fixed sync_server() to send the locally connected server list first
  3323.  
  3324.     fixed topic() to return the current topic if none is specified
  3325.  
  3326.     fixed login() to notify_mods() when setting a user's level
  3327.  
  3328. 2000-03-24  drscholl  <drscholl@users.sourceforge.net>
  3329.  
  3330.     * opennap.h, remove_connection.c, server_login.c:
  3331.     need to recursively remove server link info behind servers that split
  3332.  
  3333.     * server_login.c, synch.c:
  3334.     fixed broken sync message for server links
  3335.  
  3336.     * kill_user.c, level.c:
  3337.     fixed bug in kill_user() where the size of the av[] was not correct in the
  3338.     call to split_line()
  3339.  
  3340.     * Makefile.am, Makefile.in, README, configure, configure.in, handler.c, network.c, opennap.h, opennap.opt, opennap.plg, server_links.c, server_login.c:
  3341.     fixed to compile under Windows NT 4.0
  3342.  
  3343.     * remove_connection.c, server_links.c, server_login.c, synch.c, README, handler.c, main.c, napster.txt, opennap.h:
  3344.     added support for passing of server link info so that all servers know about
  3345.     each other
  3346.  
  3347.     * TODO, kill_user.c:
  3348.     the reason for a kill should be quoted if it exists
  3349.  
  3350.     * handler.c, level.c, main.c:
  3351.     bail out without doing anything if the user level is set to the level that
  3352.     was requested
  3353.  
  3354.     * main.c:
  3355.     need to reset the CLient id when shifting down the entries to fill gaps
  3356.  
  3357.     * main.c:
  3358.     modified main() loop to reduce the size of the Clients array if there are
  3359.     more than 10 holes in it.  this is to try and prevent EINVAL under linux,
  3360.     which does a sanity check to make sure the nfds arg is smaller than the
  3361.     current number of open fds
  3362.  
  3363.     * main.c:
  3364.     added debugging to find error with poll() call
  3365.  
  3366. 2000-03-23  drscholl  <drscholl@users.sourceforge.net>
  3367.  
  3368.     * change.c, login.c, search.c:
  3369.     fixed bad log message in login() with missing arg for %s
  3370.  
  3371.     %s should be %d in log message in alter_port()
  3372.  
  3373. 2000-03-22  drscholl  <drscholl@users.sourceforge.net>
  3374.  
  3375.     * search.c:
  3376.     removed log message from cancel_search()
  3377.  
  3378.     * main.c:
  3379.     added extensive debugging checking if poll() fails with EINVAL
  3380.  
  3381.     * level.c, main.c, whois.c:
  3382.     allow normal user's to change their own level to leech
  3383.  
  3384.     don't call FD_ISSET on a fd with value -1
  3385.  
  3386.     the windows client can't part "" in the whois response, so ensure it always
  3387.     contains at least one space
  3388.  
  3389.     * handler.c, login.c, part.c, remove_connection.c, search.c:
  3390.     fixed memory leak in user_ip() which occurred when nick collisions happen
  3391.  
  3392.     removed debug log message from handle_connection() when unprocessed bytes
  3393.     remain
  3394.  
  3395.     rewrote cancel_search() to send final ACKs when a server quits before
  3396.     sending all acks
  3397.  
  3398.     * join.c:
  3399.     fixed botched send_cmd() in channel_level()
  3400.  
  3401.     * join.c, login.c, main.c, search.c:
  3402.     added more checks for out of memory conditions
  3403.  
  3404.     * join.c:
  3405.     allow channel_level() to be called with only the channel name to report the
  3406.     current level
  3407.  
  3408.     * login.c:
  3409.     display the ip address when a banned user attempts to log in
  3410.  
  3411.     * handler.c:
  3412.     use a binary search to look up the handler for each received message
  3413.  
  3414. 2000-03-21  drscholl  <drscholl@users.sourceforge.net>
  3415.  
  3416.     * napster.txt: updated protocol information
  3417.  
  3418.     * login.c, main.c:
  3419.     fixed memory leak in login() when the login fails
  3420.  
  3421.     exit main loop on poll() error
  3422.  
  3423.     * change.c, handler.c, join.c, napster.txt, opennap.h, part.c:
  3424.     added 'set user password' (753) admin command
  3425.  
  3426.     added 'set user speed' (625) admin command
  3427.  
  3428.     * main.c:
  3429.     fixed accept_connection() to check for out of memory errors
  3430.  
  3431.     * upload_complete.c:
  3432.     upload_ok() should call print_args() when it detects a malformed message
  3433.  
  3434.     * search.c:
  3435.     added checking for out of memory errors in search_internal()
  3436.  
  3437. 2000-03-20  drscholl  <drscholl@users.sourceforge.net>
  3438.  
  3439.     * main.c:
  3440.     bandwidth stats need to be printed with %f not %d
  3441.  
  3442.     * main.c:
  3443.     bandwidth usage stats were not in kbytes/sec.
  3444.  
  3445.     Last_Click was not updated.
  3446.  
  3447.     * join.c:
  3448.     invalid_channel returned 1 for count>0
  3449.  
  3450.     * buffer.c, handler.c, main.c, opennap.h:
  3451.     added total input/output bandwidth usage statistics.
  3452.  
  3453.     * join.c, login.c:
  3454.     added a check for valid channel name
  3455.  
  3456. 2000-03-19  drscholl  <drscholl@users.sourceforge.net>
  3457.  
  3458.     * TODO, join.c:
  3459.     check for missing channel name in join()
  3460.  
  3461. 2000-03-18  drscholl  <drscholl@users.sourceforge.net>
  3462.  
  3463.     * join.c, synch.c:
  3464.     synch_server() should send the channel level it is other than LEVEL_USER.
  3465.  
  3466.     * README, handler.c, join.c, opennap.h:
  3467.     added new command 10201 to set the minimum user level required to enter a
  3468.     channel.
  3469.  
  3470.     * ChangeLog, NEWS, configure:
  3471.     post release commit for 0.22
  3472.  
  3473. 2000-03-17  drscholl  <drscholl@users.sourceforge.net>
  3474.  
  3475.     * kill_user.c, unmuzzle.c:
  3476.     allow any user to kill/unmuzzle a user that is below their level
  3477.  
  3478.     * napster.txt, server_links.c:
  3479.     server_links() should allow the command to be issued by a remote user.
  3480.  
  3481.     updated the text for message 300 in napster.txt
  3482.  
  3483.     * download.c, login.c, opennap.h, opennap.spec, util.c:
  3484.     added print_args() utility function for use in dumping the input command for
  3485.     error messages
  3486.  
  3487.     * README, announce.c, configure.in, opennap.h:
  3488.     wallop() was using the wrong tag for the response to the client
  3489.  
  3490.     * handler.c:
  3491.     fixed error in encapsulated() where it was using con->sendbuf instead of
  3492.     con->recvbuf to get the packet to relay
  3493.  
  3494.     * README, free_user.c, login.c, opennap.h:
  3495.     removed log message from free_user()
  3496.  
  3497.     * NEWS, README, ban.c, init.c, login.c, napster.txt, network.c, part.c, search.c, textdb.c, AUTHORS:
  3498.     incorporated OS/2 port from Brian Smit <dbsoft@technologist.com>.
  3499.  
  3500.     fixes to compile cleanly under Solaris 2.7 with egcs 1.1.2
  3501.  
  3502.     updated REAMDE with list of supported operating systems.
  3503.  
  3504.     * handler.c, search.c:
  3505.     fixed memory leak in remote search functions if the server that we received
  3506.     the search request from splits before we send the ack for the search
  3507.  
  3508.     * README, announce.c, handler.c, opennap.h, part_channel.c, public.c, util.c:
  3509.     fixed bug in encapsulated() where the complete packet was not correctly
  3510.     relayed when the recipient of the message is not local.
  3511.  
  3512.     added format_message() utility function
  3513.  
  3514.     * buffer.c:
  3515.     minor modifications to buffer_decompress() to avoid unecessary operations
  3516.  
  3517.     * browse.c, buffer.c, client_quit.c, handler.c, upload_complete.c:
  3518.     removed additional extraneous logging messages
  3519.  
  3520.     rewrote the buffer_compress() routine in hopes of solving the server link
  3521.     problem.
  3522.  
  3523.     * download.c, handler.c, main.c, search.c:
  3524.     removed many log messages that are no longer really necessary.
  3525.  
  3526.     dispatch_command() will now dump the contents of the input buffer when it
  3527.     detects a command that is unknown, and will automatically close the
  3528.     connection to another server upon this error
  3529.  
  3530. 2000-03-16  drscholl  <drscholl@users.sourceforge.net>
  3531.  
  3532.     * add_file.c, announce.c, ban.c, buffer.c, change.c, download.c, free_user.c, handler.c, join.c, kill_user.c, level.c, login.c, main.c, muzzle.c, opennap.h, part.c, public.c, remove_connection.c, remove_file.c, search.c, server_connect.c, server_links.c, server_login.c, server_usage.c, topic.c, unmuzzle.c, util.c:
  3533.     made the server list a real LIST instead of an array.  removed global
  3534.     Num_Servers.  pass_message_args() will now return without doing anything if
  3535.     there are no connected servers so that each handler routine doesn't have to
  3536.     check for Servers!=0.
  3537.  
  3538. 2000-03-15  drscholl  <drscholl@users.sourceforge.net>
  3539.  
  3540.     * level.c:
  3541.     fixed broken log message causing a segfault
  3542.  
  3543.     * buffer.c, level.c:
  3544.     level() should register the nick if not present in the local db and the user
  3545.     level is moderator or higher.
  3546.  
  3547.     * join.c:
  3548.     the 406 join message should only be sent to local users
  3549.  
  3550.     * join.c, privmsg.c:
  3551.     fixed sequence of commands generated by the join commmand.
  3552.  
  3553.     removed commented out code from privmsg.c
  3554.  
  3555.     * join.c:
  3556.     fixed coredump on log message when a user has reached max channel membership
  3557.  
  3558. 2000-03-14  drscholl  <drscholl@users.sourceforge.net>
  3559.  
  3560.     * public.c:
  3561.     fixed bug with relaying the emote command to remote servers
  3562.  
  3563.     * handler.c, login.c, opennap.h:
  3564.     added register_user() command (10200) to allow admins to force registration
  3565.     of user accounts
  3566.  
  3567.     * login.c:
  3568.     user_ip() should use strtoul() to convert the string ip into an integer.
  3569.  
  3570.     * join.c, login.c, server_connect.c, server_login.c:
  3571.     modified join() to alloc the memory required before sending any messages to
  3572.     clients so that if memory runs out we can recover the state.
  3573.  
  3574.     server_connect() should allow duplicate connects to the same host on
  3575.     different ports.
  3576.  
  3577.     user_ip() should case the result of strtol() to unsigned int.
  3578.  
  3579.     server_login() should notify local admins when another server attempts to
  3580.     join
  3581.  
  3582. 2000-03-12  drscholl  <drscholl@users.sourceforge.net>
  3583.  
  3584.     * login.c:
  3585.     register_nick() should only fail if the user is already logged in.
  3586.  
  3587. 2000-03-11  drscholl  <drscholl@users.sourceforge.net>
  3588.  
  3589.     * search.c:
  3590.     need to keep a local flag in the DSEARCH struct for use with checking where
  3591.     to send the final ACK in remote_search_end.  if the local user logs off then
  3592.     search->con will be invalid so we can't use ISUSER(search->con) to decide.
  3593.  
  3594. 2000-03-10  drscholl  <drscholl@users.sourceforge.net>
  3595.  
  3596.     * Makefile.am, Makefile.in, configure, handler.c, opennap.spec, sample.servers, sample.users, textdb.c:
  3597.     handle_connection() should loop around read() when getting a packet header
  3598.     since some clients send it in two pieces
  3599.  
  3600.     added sample users and servers files, and a rpm spec file for building a
  3601.     binary package for Red Hat users.
  3602.  
  3603.     * handler.c:
  3604.     fixed partial packet header reading again.
  3605.  
  3606.     * handler.c:
  3607.     fix to read the packet header in multiple pieces
  3608.  
  3609.     * handler.c:
  3610.     check to see if 4 bytes of the header have been read after the initial
  3611.     read
  3612.  
  3613.     * handler.c:
  3614.     write a nul (\0) char at the end of the data in handle_connection() when
  3615.     an error is detected so that the log message is readable
  3616.  
  3617.     * handler.c:
  3618.     tag and len should be unsigned short integers
  3619.  
  3620.     * add_file.c:
  3621.     fix to abort nicely if the user hash table can't be allocated
  3622.  
  3623.     * buffer.c, handler.c, main.c, opennap.h, remove_connection.c:
  3624.     rewrote input handler to avoid allocating a new buffer every time data is
  3625.     read.  instead, a single buffer is reused and extended if required.  all
  3626.     input is processed as it is read now instead of breaking the reading and
  3627.     processing into two steps.
  3628.  
  3629.     * list.c, list.h:
  3630.     added macro LIST_NEW() as a wrapper around list_new() so that it gets
  3631.     inlined when DEBUG is turned on.
  3632.  
  3633. 2000-03-09  drscholl  <drscholl@users.sourceforge.net>
  3634.  
  3635.     * hotlist.c:
  3636.     fixed hotlist bug.  the hotlist entry was not being removed from the user's
  3637.     personal list in the CONNECTION struct
  3638.  
  3639.     * hotlist.c, opennap.h:
  3640.     more debugging to find the hotlist problem.
  3641.  
  3642.     * README, hotlist.c, list.c, list.h, sample.conf, util.c:
  3643.     added list_validate() function to be used in tracking down the hotlist bug
  3644.  
  3645.     * hotlist.c, opennap.h, remove_connection.c, util.c:
  3646.     simplified hotlist removal code by calling list_delete() instead of
  3647.     iterating through the list.
  3648.  
  3649.     need to set con->uopt.hotlist to 0 after call list_free() to avoid ASSERTing
  3650.     in cancel_search()
  3651.  
  3652.     * list.c:
  3653.     called FREE on the wrong pointer in list_delete()
  3654.  
  3655.     * util.c:
  3656.     seed the random number context with as many bytes as are read, even if less
  3657.     than requested.
  3658.  
  3659.     * add_file.c, hotlist.c:
  3660.     forgot to set hotlist->magic when creating a new entry
  3661.  
  3662.     forgot to set list->data when adding a file to the db
  3663.  
  3664.     * add_file.c, hotlist.c, join.c, list.c, list.h, remove_connection.c, search.c, textdb.c, userdb.c:
  3665.     removed all use of list_new() and list_append() to track down the memory
  3666.     leak.  the debug info should now show where the leaked memory is being
  3667.     allocated.
  3668.  
  3669.     * napster.txt, opennap.h, remove_connection.c, search.c, util.c:
  3670.     [napster.txt] changed text for 404 message to describe it as a generic error message
  3671.  
  3672.     [util.c] split_line should eat extra whitespace between fields
  3673.  
  3674.     when a local user quits, any pending searches should be marked as invalid so
  3675.     that when the results come back the ->con pointer in the DSEARCH structure
  3676.     is not used.
  3677.     rather than for a specific value.
  3678.  
  3679.     * search.c:
  3680.     should have compiled before committing the last fix.
  3681.  
  3682.     * search.c:
  3683.     duplicate tokens should not be added to the list in tokenize(). this makes
  3684.     the search function return the same file multiple times.
  3685.  
  3686.     * change.c, debug.c, join.c, list.c, login.c, main.c, part.c:
  3687.     reformatted some code with indent
  3688.  
  3689.     fixed memory leak in reginfo() where userdb_free() was not called.
  3690.  
  3691.     * add_file.c, debug.c:
  3692.     commented out memory dump from debug_cleanup()
  3693.  
  3694.     reformatted the code in add_file.c
  3695.  
  3696. 2000-03-08  drscholl  <drscholl@users.sourceforge.net>
  3697.  
  3698.     * login.c:
  3699.     db->lastSeen was set from get_level() when it should be atol()
  3700.  
  3701.     * login.c:
  3702.     db->nick was not set when creating a new db entry in reginfo()
  3703.  
  3704.     * download.c, login.c, resume.c, search.c, synch.c, upload_complete.c:
  3705.     changed most instances of %lu to %u since we only use 32-bit integers.
  3706.  
  3707.     * opennap.h, search.c, util.c, handler.c, main.c:
  3708.     only use /dev/random to seed the random context.  on servers the system
  3709.     random pool gets eaten up too fast.
  3710.  
  3711.     * debug.c, search.c, server_login.c, userdb.c:
  3712.     fixed to handle generate_search_id() returning NULL.
  3713.  
  3714. 2000-03-07  drscholl  <drscholl@users.sourceforge.net>
  3715.  
  3716.     * util.c:
  3717.     add_client did not set the .id member when growing the array.
  3718.  
  3719.     * login.c:
  3720.     user->pass was not free'd if there was an error during login
  3721.  
  3722.     * debug.c, join.c:
  3723.     no need to test for block->file being NULL when we are only referencing
  3724.     a static memory block.
  3725.  
  3726.     muzzled users should not be allowed to join chat channels
  3727.  
  3728.     * debug.c:
  3729.     debug code doesn't need to strdup() the file passed in, it can simply
  3730.     reference it since it is static memory.
  3731.  
  3732.     got rid of the .prev pointer in the BLOCK struct.  we can walk the list of
  3733.     block with a BLOCK** pointer instead.
  3734.  
  3735.     * TODO, download.c, upload_complete.c:
  3736.     fixed upload_ok() to use send_user() instead of send_cmd() since the
  3737.     downloader could be on a remote server.
  3738.  
  3739.     removed PostgreSQL from the TODO list since we no longer use a SQL db.
  3740.  
  3741.     * announce.c, kill_user.c, main.c, opennap.h, remove_connection.c, search.c, server_links.c, upload_complete.c, util.c:
  3742.     Modified the main loop to stop shifiting down the CONNECTION array to fill
  3743.     the holes.  add_client() will insert new connections into the holes, or
  3744.     grow the array if its all full.  Added new global Max_Clients which should
  3745.     be used in any contruct that needs to loop over all local connections,
  3746.     avoiding the entries that are set to NULL (holes).
  3747.  
  3748.     * buffer.c, main.c:
  3749.     use a new local variable numClients for the loop test constructs since
  3750.     Num_Clients gets changed by the accept_connection().  this may be the cause
  3751.     of all those immediate disconnects.
  3752.  
  3753.     * search.c:
  3754.     use a faster algorithm for walking the list when deleting invalid entries
  3755.     from the files list
  3756.  
  3757.     * search.c:
  3758.     tokenize() should ignore common words because they are not useful in
  3759.     searching
  3760.  
  3761.     fdb_collect_garbage() will now print messages about bins with more than
  3762.     10,000 entries so that they can be considered for addition to the ignore
  3763.     list
  3764.  
  3765.     * AUTHORS, configure.in, init.c, main.c, network.c, opennap.h, timer.c:
  3766.     solaris port (jones@users.sourceforge.net)
  3767.  
  3768.     * add_file.c, browse.c, client_quit.c, download.c, handler.c, opennap.h, remove_file.c, server_login.c, synch.c, upload_complete.c, util.c, whois.c:
  3769.     added the ability to download files and browse users on other servers
  3770.  
  3771.     server stats for users/files/size is again global for all linked servers
  3772.  
  3773. 2000-03-06  drscholl  <drscholl@users.sourceforge.net>
  3774.  
  3775.     * add_file.c, announce.c, ban.c, browse.c, change.c, client_quit.c, download.c, handler.c, hash.c, join.c, kill_user.c, level.c, login.c, main.c, muzzle.c, opennap.h, part.c, ping.c, privmsg.c, public.c, remove_connection.c, remove_file.c, search.c, server_connect.c, server_links.c, server_login.c, server_usage.c, synch.c, topic.c, unmuzzle.c, upload_complete.c, userdb.c, util.c, whois.c:
  3776.     server message are no longer automatically forwarded by handle_connection().
  3777.     each handler is now responsible for forwarding the message if necessary.
  3778.  
  3779.     implemented the ability to search on remote servers so that the entire file
  3780.     database isn't replicated on every server.
  3781.  
  3782.     several of the server query functions now take an optional server argument
  3783.     to get the status of a remote server rather than the one the client is
  3784.     connected to.
  3785.  
  3786.     * sample.conf, config.c, init.c, main.c, network.c, opennap.h:
  3787.     added max_data_size and max_rss_size configuration variables to adjust
  3788.     sytem limits on memory usage per process
  3789.  
  3790.     * change.c, server_connect.c:
  3791.     fixes to compile cleanly with debugging turned off
  3792.  
  3793.     * opennap.h, textdb.c, util.c:
  3794.     added `#define USE_CRLF 1' for use on win32 to write \r\n at the end of each
  3795.     line in the database
  3796.  
  3797.     modified next_arg() to use space, \r, \n and \t as word separators, and to
  3798.     set the argument to 0 when hitting the \0 in the source string to avoid
  3799.     returning an extra empty string
  3800.  
  3801.     * Makefile.in, add_file.c, ban.c, buffer.c, configure, configure.in, hotlist.c, login.c, main.c, opennap.h, public.c, server_connect.c, server_login.c, synch.c, textdb.c, timer.c, userdb.c, util.c:
  3802.     created logerr() macro as a wrapper for libc errors
  3803.  
  3804.     used OUTOFMEMORY() macro when memory errors occur
  3805.  
  3806.     don't use next_arg() in public() because it will strip leading space from
  3807.     the user's message
  3808.  
  3809. 2000-03-04  drscholl  <drscholl@users.sourceforge.net>
  3810.  
  3811.     * Makefile.am, README, config.c, configure.in, main.c, opennap.h, sample.conf, textdb.c, textdb.h, userdb.c:
  3812.     removed all variables pertaining to mysql
  3813.  
  3814.     updated the installation instructions to reference the new flat text file
  3815.     user and server databases
  3816.  
  3817.     * Makefile.am, Makefile.in, change.c, compress.c, config.c, configure, configure.in, create_db.sql, db.c, init.c, level.c, login.c, main.c, opennap.h, sample.conf, server_connect.c, server_login.c, textdb.c, textdb.h, userdb.c, whois.c:
  3818.     removed all references to MySQL from the code base.
  3819.  
  3820.     added flat file text database for use with user and server lists.
  3821.  
  3822. 2000-03-03  drscholl  <drscholl@users.sourceforge.net>
  3823.  
  3824.     * search.c:
  3825.     reenable code to reject search matches for a user's own files
  3826.  
  3827.     search term for equality is "EQUAL TO", not "EQUALS" according to the
  3828.     protocol specification.
  3829.  
  3830.     added error reporting to the client if the comparison operation in a search
  3831.     string is unknown.
  3832.  
  3833.     * getopt.c, main.c:
  3834.     added copyright notice to getopt.c
  3835.  
  3836.     fixed broken usage() output
  3837.  
  3838.     * ChangeLog, Makefile.in, NEWS, README:
  3839.     ChangeLog is now generated by rcs2log.
  3840.  
  3841.     Moved contents of the NEWS file into README.  NEWS is for user visible
  3842.     changes in accordance with the GNU standards.
  3843.  
  3844.     * Makefile.am, opennap.dsp, opennap.opt, opennap.plg:
  3845.     integrated updated visual c++ files
  3846.  
  3847.     * init.c, main.c, network.c, opennap.h, getopt.c:
  3848.     fixes to compile under win2k (Damian Hodgkiss)
  3849.  
  3850.     * napster.txt, whois.c:
  3851.     fixed bug in whois response.  the total downloads comes before total uploads
  3852.     in the mod+ version
  3853.  
  3854.     added additional documentation on the 613 and 626 commands.
  3855.  
  3856. 2000-03-02  drscholl  <drscholl@users.sourceforge.net>
  3857.  
  3858.     * join.c, timer.c:
  3859.     needed to include stdlib.h to compile cleanly without debugging on
  3860.  
  3861.     * ChangeLog, add_file.c, config.c, login.c, main.c, opennap.h, remove_connection.c, search.c:
  3862.     removed old code and and -DLESSMEMORY flag since that is now the default
  3863.  
  3864.     modified core search function to using str*() functions instead of calling
  3865.     tokenize() on the filename
  3866.  
  3867.     fixed bug in login() where the number of fields in the client login (6)
  3868.     was not checked, which lead to a coredump if the last field was not present.
  3869.  
  3870.     * hash.c, hash.h, list.c, opennap.h:
  3871.     catch out of memory error conditions in list and hash functions
  3872.  
  3873.     * hotlist.c, list.c:
  3874.     reconciled differences in hotlist code
  3875.  
  3876.     * NEWS, hotlist.c, remove_connection.c:
  3877.     fixed memory leak in remove_connection() where it did not free empty hotlist
  3878.     entries
  3879.  
  3880.     * login.c: dont allow nul usernames
  3881.  
  3882.     * main.c, napster.txt, public.c:
  3883.     fixed emote command to check for required quotes around the text portion
  3884.     of the message.
  3885.  
  3886. 2000-03-01  drscholl  <drscholl@users.sourceforge.net>
  3887.  
  3888.     * getopt.c:
  3889.     added getopt() replacement for Win32 which doesn't have this function
  3890.  
  3891.     * join.c, list_channels.c, list_users.c, part.c, part_channel.c, public.c, synch.c, topic.c, util.c:
  3892.     fixed compilation errors with new list code
  3893.  
  3894.     * Makefile.am, Makefile.in, add_file.c, buffer.c, change.c, client_quit.c, download.c, free_user.c, handler.c, hotlist.c, join.c, kill_user.c, level.c, list.c, list.h, login.c, main.c, muzzle.c, opennap.h, part_channel.c, ping.c, privmsg.c, public.c, remove_connection.c, search.c, server_connect.c, server_links.c, server_login.c, server_usage.c, topic.c, unmuzzle.c, upload_complete.c, util.c, whois.c:
  3895.     added new files list.c and list.h to contain the generic list routines.
  3896.  
  3897.     switch to using LIST instead of arrays for many things which don't need to
  3898.     be directly indexed.
  3899.  
  3900.     optimized USER and CONNECTION structs to require as little memory as
  3901.     possible.
  3902.  
  3903.     * main.c, opennap.h:
  3904.     optimized fields in the DATUM struct to be as small as possible
  3905.  
  3906.     * TODO, add_file.c, hotlist.c, opennap.h, search.c:
  3907.     added -DLESSMEMORY to force the server to regenerate the token list when
  3908.     comparing rather than storing it in the database
  3909.  
  3910.     * main.c, timer.c:
  3911.     changed next_timer() to return the time offset in seconds of when the next
  3912.     timer is scheduled
  3913.  
  3914.     * network.c:
  3915.     need to include sys/time.h before sys/resouce.h on bsdi
  3916.  
  3917.     * main.c, opennap.h, timer.c:
  3918.     added next_timer() function to give the time at which the next pending event
  3919.     is scheduled.  the main even loop in the server should never block for
  3920.     longer than when a pending even is scheduled
  3921.  
  3922.     * ChangeLog, Makefile.am, Makefile.in, ban.c, init.c, join.c, main.c, opennap.h, timer.c:
  3923.     added timer functions for scheduling periodic events (colten edwards)
  3924.  
  3925.     added global variable Current_Time which is set once per iteration of the
  3926.     main loop.  functions which need the current time should use this variable
  3927.     rather than calling time()
  3928.  
  3929.     * buffer.c, hotlist.c:
  3930.     removed error message that were too verbose from send_queued_data() and
  3931.     add_hotlist()
  3932.  
  3933.     * init.c:
  3934.     handle SIGPIPE to avoid terminating the process when writing to a connection
  3935.     that got shut down
  3936.  
  3937.     * add_file.c, search.c:
  3938.     added additional debugging output to the add_file() and associated
  3939.     routines
  3940.  
  3941.     * main.c:
  3942.     moved the check for connections to the stats port to before the new
  3943.     connections port since the latter modifies Num_Clients and it was throwing
  3944.     of the check for connections to the stats port
  3945.  
  3946.     * handler.c, init.c:
  3947.     fixes to compile cleanly with debugging turned off
  3948.  
  3949.     * browse.c, search.c:
  3950.     allow max_browse_result to be 0 to indicate unlimited
  3951.  
  3952.     added additional debugging to free_flist()
  3953.  
  3954. 2000-02-29  drscholl  <drscholl@users.sourceforge.net>
  3955.  
  3956.     * Makefile.in, handler.c, init.c, main.c, opennap.h, Makefile.am:
  3957.     main.c was getting too big. broke out initialization code into init.c and
  3958.     connection handling code into handler.c
  3959.  
  3960.     * ChangeLog, main.c, network.c:
  3961.     added support for the opennap server to listen on port 8889 to report stats
  3962.     about the server to interested parties
  3963.  
  3964.     * NEWS, add_file.c, ban.c, configure, configure.in, kill_user.c, opennap.h, privmsg.c, public.c, topic.c, util.c:
  3965.     added various checks for memory exhaustion to recover "gracefully"
  3966.  
  3967.     * ChangeLog, FAQ, network.c, search.c, util.c:
  3968.     check for out of memory errors in tokenize()
  3969.  
  3970. 2000-02-28  drscholl  <drscholl@users.sourceforge.net>
  3971.  
  3972.     * add_file.c, ban.c, config.c, configure, configure.in, main.c, network.c, opennap.h, sample.conf:
  3973.     allow max_shared to be 0 to allow unlimited sharing
  3974.  
  3975.     added new config vars 'uid' and 'gid' to specify the uid/gid to switch to
  3976.     if running as root (uid 0)
  3977.  
  3978.     added new config var 'connection_hard_limit' to specify the maxium number
  3979.     of file descriptors the process can use
  3980.  
  3981.     added configure option --with-fd-setsize to specify the maxium number of
  3982.     filedescriptor that can be used on select() based systems
  3983.  
  3984.     * config.c, main.c, opennap.h:
  3985.     added new config variable `collect_interval' to control the interval between
  3986.     garbage collection
  3987.  
  3988.     * buffer.c, change.c, level.c, login.c, napster.txt, opennap.h, privmsg.c, util.c:
  3989.     fixes to compile cleanly with --disable-debug
  3990.  
  3991.     added safe_realloc() function for detection of memory exhaustion
  3992.  
  3993. 2000-02-27  drscholl  <drscholl@users.sourceforge.net>
  3994.  
  3995.     * hotlist.c:
  3996.     print tag value out when the user attempts to add another user already in
  3997.     their hotlist
  3998.  
  3999.     * add_file.c, free_user.c, hotlist.c, resume.c, util.c:
  4000.     log() messages in add_file() and share_file() were missing the nick, causing
  4001.     a segfault
  4002.  
  4003. 2000-02-26  drscholl  <drscholl@users.sourceforge.net>
  4004.  
  4005.     * opennap.h, resume.c:
  4006.     rearranged members of the DATUM struct.
  4007.  
  4008.     added additional debug statement to resume()
  4009.  
  4010.     * add_file.c, opennap.h, search.c, synch.c:
  4011.     added a new content type CT_MP3 to serve as a default.  CT_AUDIO doesn't
  4012.     necessarily mean audio/mp3
  4013.  
  4014.     * ChangeLog, FAQ, add_file.c, main.c, metaserver.c, opennap.h, search.c, synch.c:
  4015.     restored sharing of multimedia files.
  4016.  
  4017.     * ChangeLog:
  4018.     updated ChangeLog with recent changes
  4019.  
  4020.     * buffer.c, main.c:
  4021.     modified buffer_compress() to allocate one 16k output buffer and compresss
  4022.     as much data as will fit in it.  this is necessary since queue_data() can
  4023.     now produce multiple 16k buffer chunks for server connections.
  4024.  
  4025. 2000-02-25  drscholl  <drscholl@users.sourceforge.net>
  4026.  
  4027.     * main.c:
  4028.     changed listen() queue backlog to a value of 50
  4029.  
  4030.     * README, main.c, opennap.h, server_usage.c:
  4031.     added number of global users, server start time, and server uptime to the
  4032.     10115 server stats reply
  4033.  
  4034.     * kill_user.c:
  4035.     should set user->con->destroy=1 when killing a local user, not con->destroy
  4036.  
  4037.     * main.c, search.c:
  4038.     if multiple FILENAME CONTAINS clauses are specified, treat them as an
  4039.     implicit AND operation
  4040.  
  4041.     * Makefile.in, main.c, opennap.h, search.c:
  4042.     added a garbage collection routine to run every 60 seconds to free up memory
  4043.     associated with invalid entries
  4044.  
  4045.     * ChangeLog, Makefile.am, README, main.c, opennap.h, server_links.c:
  4046.     added new command 10112 to show the server links (colten edwards)
  4047.  
  4048.     * AUTHORS, ChangeLog, Makefile.am, Makefile.in, debug.c, debug.h, main.c, opennap.h, server_usage.c:
  4049.     added a new command 10115 for getting some useful information about the
  4050.     server (colten edwards)
  4051.  
  4052.     * upload_complete.c:
  4053.     upload_ok() was looking in the downloader's hash table for the file info,
  4054.     should be the uploader's table
  4055.  
  4056.     * main.c:
  4057.     forgot to uncomment the free_hash() on the File_Table
  4058.  
  4059.     * search.c:
  4060.     nick was printed using %d instead of %s when returing search results
  4061.  
  4062.     * search.c:
  4063.     fdb_search() should return if it can't find a search token in the hash table
  4064.     since we can be sure there are no matches
  4065.  
  4066.     * search.c: fixed bug in fdb_search()
  4067.  
  4068.     * ChangeLog, whois.c:
  4069.     minor whois change
  4070.  
  4071.     * browse.c, buffer.c, change.c, config.c, configure, configure.in, db.c, debug.c, debug.h, download.c, free_user.c, hash.c, login.c, main.c, opennap.h, remove_file.c, resume.c, search.c, server_connect.c, server_login.c, synch.c, upload_complete.c, util.c, add_file.c:
  4072.     wrote new database for storing the library.  we now use a hash table based
  4073.     on word tokens in the filename, with a list of files for each word
  4074.  
  4075.     modified malloc debugger to use a hash table to store the allocation
  4076.     information because a single list was too slow for large amounts of data
  4077.  
  4078.     modified buffer_queue() to allocate chunks of memory and allocate a new
  4079.     buffer in the list if there is not enough room to append, instead of using
  4080.     realloc.  this should improve performace
  4081.  
  4082.     began adding extra checks for when we run out of memory so that we can
  4083.     recover gracefully.
  4084.  
  4085. 2000-02-24  drscholl  <drscholl@users.sourceforge.net>
  4086.  
  4087.     * main.c:
  4088.     we should force a call to send_queued_data() in main() if the connection is
  4089.     about to be shut down.  in this case we write as much as we can before we
  4090.     close the socket.
  4091.  
  4092.     * main.c:
  4093.     no longer necessary to check for existence of the client pointer because
  4094.     it won't be removed except by the main() routine itself.
  4095.  
  4096.     * buffer.c, kill_user.c, login.c, main.c, opennap.h, remove_connection.c, server_connect.c:
  4097.     remove_connection() should now only be called from the main() routine.
  4098.     other functions that wish the client connection to be shut down should
  4099.     set the .destroy memory to a nonzero value.
  4100.  
  4101.     * whois.c, change.c:
  4102.     username was printed out using %d instead of %s in alter_port()
  4103.  
  4104.     the whois response now inclues the server the user is connected to if the
  4105.     user level of the client issuing the request is admin+
  4106.  
  4107.     * buffer.c:
  4108.     send_queued_data() should call buffer_free() on the output buffer before
  4109.     calling remove_connection()
  4110.  
  4111.     * buffer.c, main.c:
  4112.     send_queued_data() should call remove_connection() instead of setting
  4113.     con->destroy=1 since it is safe to free the CONNECTION pointer at
  4114.     that point.
  4115.  
  4116. 2000-02-23  drscholl  <drscholl@users.sourceforge.net>
  4117.  
  4118.     * download.c: more logging in download()
  4119.  
  4120.     * buffer.c, client_quit.c, download.c, free_user.c, remove_file.c:
  4121.     need to call fudge_path() on filename before SQL query in remove_file()
  4122.  
  4123.     fixed download() to send the correct 203 command when the uploader is
  4124.     firewalled.
  4125.  
  4126.     added log messages for sending/receving client quit messages
  4127.  
  4128.     * download.c:
  4129.     queue_limit() should check for mysql_num_rows() > 0 before calling
  4130.     mysql_fetch_row()
  4131.  
  4132.     * client_quit.c, download.c, kill_user.c, napster.txt:
  4133.     fixed client_quit() to avoid calling hash_remove() when it detects a QUIT for
  4134.     a local user
  4135.  
  4136.     * ChangeLog, main.c:
  4137.     send_queued_data() should be called if there is uncompressed data waiting to
  4138.     be sent to the server
  4139.  
  4140.     * client_quit.c, download.c, kill_user.c, login.c, main.c, remove_file.c, upload_complete.c:
  4141.     reformatted log() messages for the upload/download functions
  4142.  
  4143. 2000-02-22  drscholl  <drscholl@users.sourceforge.net>
  4144.  
  4145.     * login.c, main.c:
  4146.     alter_port() was not listed in the handler callback table
  4147.  
  4148.     * download.c, kill_user.c:
  4149.     download() should use validate_user() instead of just VALID()
  4150.  
  4151.     use next_arg() in kill_user() instead of plain strchr()
  4152.  
  4153.     * buffer.c, change.c:
  4154.     fixed buffer_uncompress() to set .datamax when calling realloc().
  4155.  
  4156.     * ChangeLog, buffer.c, opennap.h:
  4157.     modified buffer_queue() to allocate memory in 1k chunks to avoid calling
  4158.     realloc() too often
  4159.  
  4160.     modified buffer_compress() to allocate memory in 2k chunks to avoid calling
  4161.     realloc() too often
  4162.  
  4163.     * ChangeLog, network.c, opennap.h, server_login.c:
  4164.     set SO_SNDBUF and SO_RCVBUF to 16k for server-server tcp connections
  4165.  
  4166.     * ChangeLog, change.c, opennap.h:
  4167.     added support for 613 command for admin to alter the data port the client is
  4168.     listening on (only works with the win32 clients)
  4169.  
  4170.     * ChangeLog, browse.c, buffer.c, config.c, main.c, napster.txt, opennap.h, resume.c, search.c:
  4171.     calls to write() should check for EWOULDBLOCK to avoid closing the
  4172.     connection unnecessarily
  4173.  
  4174.     added max_browse_result config variable to control the maxium number of
  4175.     entries returned on a /browse command (default 1500)
  4176.  
  4177.     allow max_search_result to be 0 to allow for arbitrary size searches
  4178.  
  4179.     * public.c:
  4180.     fixed bug where the first char of a public message gets chopped off
  4181.  
  4182.     * db.c, login.c, public.c, resume.c:
  4183.     reduced max filename size to 150 to try to avoid mysqld crashes.
  4184.  
  4185.     fixed bug in resume() where the md5 attribute was not quoted in the SQL
  4186.     query.
  4187.  
  4188.     change order in login() to wait until after the login/email ack has been
  4189.     sent before sending the notification of the user level being changed to
  4190.     avoid breaking the win32 client.
  4191.  
  4192. 2000-02-19  drscholl  <drscholl@users.sourceforge.net>
  4193.  
  4194.     * download.c:
  4195.     functions that call transfer_wrapper() need to check the return value
  4196.  
  4197.     * ChangeLog, add_file.c, config.c, configure, configure.in, login.c, main.c, metaserver.c, network.c, opennap.h, search.c:
  4198.     added fixes for clean compile under Solaris 2.6
  4199.  
  4200.     handle_connection() now prints the tag and how many bytes it is waiting for
  4201.     when it detects that it needs to wait for the whole data packet to arrive
  4202.  
  4203. 2000-02-18  drscholl  <drscholl@users.sourceforge.net>
  4204.  
  4205.     * README, main.c, opennap.h, privmsg.c, whois.c:
  4206.     mod+ users are now notified when someone does a /whois on them
  4207.  
  4208.     * db.c, debug.c, network.c, remove_connection.c:
  4209.     debug_malloc() should exit gracefully if memory runs out
  4210.  
  4211.     adjust the size of the filename field in the library SQL table to be 237
  4212.     chars.  mysql 3.22.23 seems to crash if the fields is any longer.
  4213.  
  4214.     * README, db.c:
  4215.     optimized the library SQL table to use as small as possible size integers
  4216.  
  4217.     * remove_file.c:
  4218.     added more ASSERT() tests for Num_Files<0
  4219.  
  4220.     * free_user.c, remove_file.c, sample.conf:
  4221.     added debugging code to try and detect when Num_Files < 0
  4222.  
  4223.     * ChangeLog, Makefile.in, aclocal.m4, configure, configure.in:
  4224.     added AM_MAINTAINER_MODE macro to configure.in
  4225.  
  4226.     * search.c:
  4227.     fixed the search() function for the linespeed,bitrate&frequency attributes
  4228.     where an `&&' was not placed before the test in the SQL query string.
  4229.  
  4230. 2000-02-17  drscholl  <drscholl@users.sourceforge.net>
  4231.  
  4232.     * ChangeLog, NEWS, README, level.c, napster.txt:
  4233.     modified level() to update the db for registered accounts when a user's
  4234.     level is changed, so that it is persistent across logins
  4235.  
  4236.     * login.c:
  4237.     fixed bug in register_nick() where there was no "return;" when the MySQL
  4238.     query failed.
  4239.  
  4240.     * download.c, napster.txt:
  4241.     fixed broken queue limit server message (620) which did not include the file
  4242.     size
  4243.  
  4244.     * configure, configure.in, opennap.h:
  4245.     added --disable-random option to configure to turn off use of /dev/random
  4246.     on machines which have it
  4247.  
  4248. 2000-02-16  drscholl  <drscholl@users.sourceforge.net>
  4249.  
  4250.     * config.c, main.c, opennap.h:
  4251.     added listen_addr config variable to specify which interface to listen on
  4252.  
  4253.     * buffer.c, download.c, util.c:
  4254.     added better handling for bad input in the download functions
  4255.  
  4256.     validate_user() should check for at least a valid pointer on the .con member
  4257.     if its non-null
  4258.  
  4259.     * buffer.c:
  4260.     took extraneous assert() out of buffer_consume() to clean up error
  4261.     messages.
  4262.  
  4263.     * download.c:
  4264.     fixed compilation error in queue_limit()
  4265.  
  4266.     * download.c, main.c, napster.txt, opennap.h, server_login.c:
  4267.     added support for the user queue limit command (619/620)
  4268.  
  4269.     added additional debugging in server_login_ack()
  4270.  
  4271. 2000-02-15  drscholl  <drscholl@users.sourceforge.net>
  4272.  
  4273.     * login.c:
  4274.     added more debugging check for a duplicat login message sent from clients
  4275.  
  4276.     * login.c:
  4277.     added additional debugging output to login() and register_nick()
  4278.  
  4279.     * main.c:
  4280.     modified update_stats() to print the current system time
  4281.  
  4282.     * opennap.h, whois.c, add_file.c, buffer.c, change.c, hash.c, main.c:
  4283.     win32 port for 0.12
  4284.  
  4285. 2000-02-14  drscholl  <drscholl@users.sourceforge.net>
  4286.  
  4287.     * AUTHORS, ChangeLog, Makefile.am, Makefile.in, NEWS, announce.c, browse.c, buffer.c, change.c, config.c, db.c, download.c, free_user.c, join.c, login.c, main.c, md5.c, motd.c, network.c, opennap.dsp, opennap.dsw, opennap.h, part.c, part_channel.c, privmsg.c, public.c, remove_connection.c, remove_file.c, resume.c, search.c, server_connect.c, server_login.c, snprintf.c, synch.c, topic.c, upload_complete.c, util.c, whois.c:
  4288.     win32 port from "Damian Hodgkiss" <mian@thirty4.com>
  4289.  
  4290.     default client queue length set to 100kbytes
  4291.  
  4292. 2000-02-13  drscholl  <drscholl@users.sourceforge.net>
  4293.  
  4294.     * opennap.h, public.c, util.c:
  4295.     fixed broken emote() function to avoid segfaults
  4296.  
  4297. 2000-02-12  drscholl  <drscholl@users.sourceforge.net>
  4298.  
  4299.     * login.c, main.c, motd.c, napster.txt, opennap.h, public.c:
  4300.     added support for client request for motd (621)
  4301.  
  4302.     * main.c, napster.txt, opennap.h, public.c:
  4303.     added support for the emote (824) command
  4304.  
  4305. 2000-02-11  drscholl  <drscholl@users.sourceforge.net>
  4306.  
  4307.     * main.c, network.c, opennap.h:
  4308.     try_connect() needs to bind_interface() before calling connect()
  4309.  
  4310.     * network.c: oops, busted lookup_ip()
  4311.  
  4312.     * main.c, network.c:
  4313.     fixed broken log() format in handle_connection() when printing out the
  4314.     message received from a client is unknown
  4315.  
  4316.     * Makefile.am, Makefile.in, main.c:
  4317.     removed Id: from Makefile.am since it got passed to Makefile.in and was
  4318.     screwing things up
  4319.  
  4320.     * server_login.c:
  4321.     server_login() should send errors using message 0, not 404
  4322.  
  4323.     * login.c:
  4324.     added check for a nick with nonprintable ascii chars
  4325.  
  4326. 2000-02-10  drscholl  <drscholl@users.sourceforge.net>
  4327.  
  4328.     * Makefile.in, add_file.c, download.c:
  4329.     fixes for download_end() and upload_end() to prevent subtracting from the
  4330.     counts if the count is 0
  4331.  
  4332. 2000-02-08  drscholl  <drscholl@users.sourceforge.net>
  4333.  
  4334.     * ChangeLog, Makefile.am, Makefile.in, change.c, main.c, opennap.h, spynap.c:
  4335.     removed spynap from the distribution
  4336.  
  4337.     added support for the change email (702) command
  4338.  
  4339.     * TODO, change.c, main.c, napster.txt, opennap.h:
  4340.     added support for the change password (701) command
  4341.  
  4342.     * kill_user.c, login.c, opennap.h, whois.c:
  4343.     added support for the whowas (605) server response
  4344.  
  4345.     kill_user() did not skip the colon (:) prefix on the server name
  4346.  
  4347.     * login.c:
  4348.     register_nick() had compilation warnings about unused variables `pkt' and `len'
  4349.  
  4350.     * login.c:
  4351.     removed spurious colon (:) from the SQL query in reginfo()
  4352.  
  4353.     the colon (:) before the server name was not skipped in reginfo()
  4354.  
  4355.     * util.c:
  4356.     pass_message() should not assert on validate_connection() since it can be
  4357.     NULL when generating a new message.
  4358.  
  4359.     * free_user.c, login.c, opennap.h, synch.c, util.c:
  4360.     need to store the user password in order to do user registration on multiple
  4361.     servers
  4362.  
  4363. 2000-02-07  drscholl  <drscholl@users.sourceforge.net>
  4364.  
  4365.     * Makefile.in, configure, configure.in, network.c:
  4366.     freebsd does not have socklen_t, so add a check for it in configure.in
  4367.  
  4368. 2000-02-05  drscholl  <drscholl@users.sourceforge.net>
  4369.  
  4370.     * ChangeLog, NEWS, README, TODO, config.c, create_db.sql, login.c, main.c, opennap.h:
  4371.     added support for account registration
  4372.  
  4373. 2000-02-04  drscholl  <drscholl@users.sourceforge.net>
  4374.  
  4375.     * Makefile.in, main.c:
  4376.     change_speed() was not in the lookup table in main.c
  4377.  
  4378.     * Makefile.in, opennap.h, server_connect.c:
  4379.     fix to prevent server_connect() from tyring to link the same server twice
  4380.  
  4381.     * Makefile.in, add_file.c, change.c, configure, configure.in, free_user.c, main.c, napster.txt, opennap.h, remove_file.c, search.c, synch.c, util.c:
  4382.     removed minidb support.
  4383.  
  4384.     cleaned up search() routine.
  4385.  
  4386.     * Makefile.in, add_file.c, change.c, configure, configure.in, free_user.c, main.c, napster.txt, opennap.h, remove_file.c, search.c, synch.c, util.c:
  4387.     added support for a mini-db instead of MySQL for storing the library.
  4388.  
  4389.     * main.c, synch.c:
  4390.     fix to avoid looping endlessly when POLLHUP is set for a client connection.
  4391.  
  4392.     * main.c, search.c, synch.c, ChangeLog, Makefile.in:
  4393.     search() should return a 404 error if the search failed
  4394.  
  4395.     modified synch_server() to first sync the users and channels, then do a bulk
  4396.     dump of the library table in hopes of improving performance.
  4397.  
  4398. 2000-02-03  drscholl  <drscholl@users.sourceforge.net>
  4399.  
  4400.     * ChangeLog, Makefile.in, NEWS, add_file.c, configure, configure.in, main.c, metaserver.c, motd.c:
  4401.     added support for poll() on systems that support it
  4402.  
  4403.     fixed bug in share_file() where the escaped path was not used in the sql
  4404.     query to insert the row
  4405.  
  4406.     fixed bug in share_file() where the information on the file size was not
  4407.     incorporated into the global stats
  4408.  
  4409.     * Makefile.in, configure, configure.in, main.c, metaserver.c:
  4410.     added support for using poll() on systems that support it
  4411.  
  4412.     * add_file.c:
  4413.     share_file() forgot to quote the filename in the sql query
  4414.  
  4415.     fixed compute_soundex() to avoid generates hases over 4 chars long
  4416.  
  4417.     * ban.c, search.c:
  4418.     fixed bug in search() when specifying the TYPE field
  4419.  
  4420.     banlist() should return an empty ban request packet to indicate the end of
  4421.     the list.
  4422.  
  4423. 2000-02-02  drscholl  <drscholl@users.sourceforge.net>
  4424.  
  4425.     * ChangeLog, Makefile.am, Makefile.in, change.c, metaserver.c:
  4426.     change_speed() needs to update the library table to reflect a speed change
  4427.  
  4428.     * ChangeLog, Makefile.in, README, TODO, ban.c, buffer.c, debug.c, debug.h, free_user.c, hash.c, hotlist.c, kill_user.c, login.c, napster.txt, remove_connection.c, remove_file.c, resume.c, server_connect.c, synch.c, topic.c, util.c, whois.c:
  4429.     fixes to compile cleanly with debugging turned off (not recommended though)
  4430.  
  4431.     * Makefile.in, aclocal.m4, configure, configure.in, md5.h, server_login.c, util.c:
  4432.     finished integration of the md5 routines from GNU md5sum (textutils)
  4433.  
  4434.     * ChangeLog, Makefile.am, NEWS, global.h, md5.c, md5.h, md5c.c:
  4435.     removed md5.h, global.h and md5c.c since they don't work on Alpha, switch to
  4436.     using version from the md5sum program in GNU textutils
  4437.  
  4438.     * Makefile.in, aclocal.m4, add_file.c, buffer.c, compress.c, configure, debug.c, debug.h, hash.c, hash.h, main.c, metaserver.c, network.c, opennap.h, server_connect.c, server_login.c, util.c:
  4439.     fixes to compile under RedHat Linux 6.0 (Alpha)
  4440.  
  4441.     * buffer.c, login.c, main.c, opennap.h:
  4442.     if a client connects from localhost, the external ip address should be used
  4443.     so that remote users can connect to their data port
  4444.  
  4445. 2000-02-01  drscholl  <drscholl@users.sourceforge.net>
  4446.  
  4447.     * synch.c:
  4448.     fixed synch_user() so that it will not sync users that come from behind
  4449.     the server we are syncing with
  4450.  
  4451.     * public.c:
  4452.     fixed bug in public() where a middle server would rebroadcast all received
  4453.     messages ending up doubling the messages to clients
  4454.  
  4455.     * Makefile.am, Makefile.in, buffer.c, free_user.c, main.c, remove_connection.c:
  4456.     use `unsigned long' instead of ulong for portability
  4457.  
  4458.     fixed bug in handle_connection() where the call to add_random_bytes had
  4459.     arguments without con->
  4460.  
  4461.     server_split was issuing QUIT messages for all users when a server split
  4462.     happened.
  4463.  
  4464.     free_user() should check for user->email != 0 before free()ing it
  4465.  
  4466.     * README, add_file.c, opennap.h, synch.c:
  4467.     synch_user needed to use the new 10300 (share file) message to sync non-mp3
  4468.     data.
  4469.  
  4470.     share_file() now checks to make sure the content-type looks valid by
  4471.     inspecting the major MIME type
  4472.  
  4473.     added additional information on the new 10300 message to the README
  4474.  
  4475.     * ChangeLog, README, add_file.c, db.c, free_user.c, main.c, opennap.h, search.c, spynap.c:
  4476.     added support for sharing generic media types other than mp3
  4477.  
  4478.     * Makefile.am, Makefile.in, spynap.c:
  4479.     added md5 hash checking on downloads to spynap
  4480.  
  4481. 2000-01-31  drscholl  <drscholl@users.sourceforge.net>
  4482.  
  4483.     * main.c:
  4484.     assertion in dispatch_command was in error, the length really was 0xee.  use
  4485.     VALID_LEN() to test for buffer overrun instead.
  4486.  
  4487.     * main.c, util.c:
  4488.     added additional ASSERT() in dispatch_command() to track down buffer overrun
  4489.  
  4490.     * buffer.c, free_user.c, ping.c:
  4491.     free_user() should not remove files from the db when a signal is caught, it
  4492.     should just free the memory assocated with the structure
  4493.  
  4494.     fixed bug in buffer_group() where the number of consumed bytes in the next
  4495.     buffer was not skipped
  4496.  
  4497.     ping/pong now xmit any optional arguments the clients pass to them
  4498.  
  4499. 2000-01-30  drscholl  <drscholl@users.sourceforge.net>
  4500.  
  4501.     * buffer.c:
  4502.     more fixes in attempt to solve the pop_user missing user nick on server
  4503.     message.
  4504.  
  4505.     changed buffer_validate() to not try to validate the ->next pointer other
  4506.     than it is a valid pointer.
  4507.  
  4508.     * buffer.c, util.c:
  4509.     buffer_compress() assumed that the input buffer was not already partially
  4510.     consumed.  this should not happen, but it looks like it does in certain
  4511.     circumstances.
  4512.  
  4513.     * ChangeLog, add_file.c, buffer.c, main.c, napster.txt, search.c:
  4514.     changed add_file() to print out errors back the user when a file is not
  4515.     added to the db.
  4516.  
  4517.     changed add_file() to use a ulong instead of int for storing the file size.
  4518.  
  4519.     send_queued_data() did not print out the con->host even though there was a
  4520.     %s for it, caused a segfault.
  4521.  
  4522.     changed handle_connection() to ignore message 4 since the new napster
  4523.     v2.0beta5a sends it before the login command.
  4524.  
  4525.     search now ignores files belonging to the user who issued the command
  4526.  
  4527. 2000-01-29  drscholl  <drscholl@users.sourceforge.net>
  4528.  
  4529.     * README, main.c:
  4530.     handle_connection now prints out the message it received when it errors out
  4531.     becaues the client is not registered yet.
  4532.  
  4533.     * add_file.c:
  4534.     forgot to skip the backslash before sending the path to compute_soundex
  4535.  
  4536.     compute_soundex should skip nonalpha chars at the beginning of the string
  4537.  
  4538.     * ChangeLog, README, add_file.c, buffer.c, db.c, search.c:
  4539.     added support for soundex searches
  4540.  
  4541.     * Makefile.in, ban.c, login.c, main.c, spynap.c:
  4542.     login() was checking for CLASS_USER to set con->destroy when a banned user
  4543.     attempts to log in.  It should have been checking for CLASS_UNKNOWN since
  4544.     the connection is not registered yet.
  4545.  
  4546.     added some nice output to some of the server numerics to spynap
  4547.  
  4548. 2000-01-28  drscholl  <drscholl@users.sourceforge.net>
  4549.  
  4550.     * ChangeLog, README, config.c, main.c, opennap.h, sample.conf:
  4551.     added max_connections config variable
  4552.  
  4553.     * Makefile.in, buffer.c, debug.c, kill_user.c, login.c, main.c, opennap.h, sample.conf, server_connect.c, server_login.c, util.c:
  4554.     debug_valid should return 0 on buffer overrun
  4555.  
  4556.     handler routines should set con->destroy=1 instead of calling
  4557.     remove_connection() since handle_connection() has a cached copy of the
  4558.     pointer.  this is only necessary when destroying the connection for the
  4559.     source of the message being processed.  destroying other connections is
  4560.     perfectly fine.
  4561.  
  4562.     buffer_uncompress() should allocate 1 extra byte similar to buffer_read()
  4563.  
  4564.     * Makefile.am, Makefile.in, README, add_file.c, announce.c, ban.c, browse.c, buffer.c, change.c, client_quit.c, compress.c, config.c, configure, configure.in, debug.c, debug.h, download.c, hash.c, hotlist.c, join.c, kill_user.c, level.c, list_channels.c, list_users.c, login.c, main.c, metaserver.c, motd.c, muzzle.c, network.c, opennap.h, part.c, patchnap.c, ping.c, privmsg.c, public.c, remove_connection.c, remove_file.c, resume.c, sample.conf, search.c, server_connect.c, server_login.c, spynap.c, spyserv.c, synch.c, topic.c, unmuzzle.c, upload_complete.c, util.c, whois.c:
  4565.     major rewrite of i/o handling.  server->server links are now handled using
  4566.     a compressed stream.
  4567.  
  4568. 2000-01-27  drscholl  <drscholl@users.sourceforge.net>
  4569.  
  4570.     * NEWS, TODO, ping.c, sample.conf:
  4571.     final changes for 0.10 release.
  4572.  
  4573.     * README, db.c:
  4574.     primary key() can only be 256 bytes long, so change the nick length to 15
  4575.     and the filename length to 240.
  4576.  
  4577.     * ChangeLog, README, add_file.c, config.c, db.c, main.c, opennap.h, sample.conf:
  4578.     added max_shared variable to control how many files a user can share
  4579.  
  4580.     (owner,filename) is now the primary key to avoid duplicates.
  4581.  
  4582. 2000-01-26  drscholl  <drscholl@users.sourceforge.net>
  4583.  
  4584.     * util.c:
  4585.     max bytes per compression block was still set to debug level
  4586.  
  4587.     * Makefile.in, config.c, db.c, main.c, opennap.h, part_channel.c, sample.conf, util.c:
  4588.     fixed bug in calculate_chunk_length() where the size returned was the total
  4589.     length of the compressed data, and not the region.
  4590.  
  4591.     added max_compress configuration variable to control the maximum number of
  4592.     compressed packets to create in a single cycle, to avoid blocking client
  4593.     connections
  4594.  
  4595.     * compress.c, db.c, util.c:
  4596.     added additional error reporting to init_db()
  4597.  
  4598.     fixed bug in send_queued_data() when only a portion of the send buffer is
  4599.     compressed
  4600.  
  4601.     * network.c, util.c:
  4602.     the length of the compressed packet was 2 bytes too short
  4603.  
  4604.     moved my_ntoa() to network.c
  4605.  
  4606.     * README, compress.c, opennap.h, util.c:
  4607.     compressed_data() did not correctly handle the new packet format
  4608.  
  4609. 2000-01-25  drscholl  <drscholl@users.sourceforge.net>
  4610.  
  4611.     * Makefile.in, util.c:
  4612.     fixed send_queued_data() to ensure that compressed packets are less than
  4613.     65535 bytes long.
  4614.  
  4615.     * Makefile.in, configure, configure.in, network.c:
  4616.     COMPRESSDOTO should be set in the check for libz, not /dev/random
  4617.  
  4618.     * ChangeLog, main.c, network.c, opennap.h:
  4619.     set SO_KEEPALIVE on tcp sockets to detect dead clients
  4620.  
  4621.     * ban.c: ban() should notify mods+ of the ban
  4622.  
  4623.     * ban.c, free_user.c, join.c, muzzle.c, napster.txt, opennap.h, public.c, remove_connection.c, unmuzzle.c, util.c:
  4624.     various bugfixes.
  4625.  
  4626.     * main.c:
  4627.     should ignore EAGAIN on read() without closing the connection
  4628.  
  4629.     * add_file.c, remove_connection.c:
  4630.     bug fix in add_file()
  4631.  
  4632.     * ChangeLog, kill_user.c:
  4633.     elites should be able to kill other elites
  4634.  
  4635.     * free_user.c:
  4636.     fixed memory leak in free_user() where .server was not free'd
  4637.  
  4638.     * login.c, synch.c, util.c:
  4639.     sync_user() didn't send a proper user-ip packet
  4640.  
  4641.     * README, login.c, opennap.h:
  4642.     changed user-ip message to include the locally connected port and the server
  4643.     the user is connected to
  4644.  
  4645.     * Makefile.am, Makefile.in, TODO, login.c, main.c, network.c, opennap.h, server_connect.c, server_login.c:
  4646.     changed server connect to be nonblocking.  new file network.c contains most
  4647.     of the standard network routines.
  4648.  
  4649.     * ChangeLog:
  4650.     updated ChangeLog with today's changes
  4651.  
  4652.     * download.c, kill_user.c, level.c, main.c, opennap.h, server_connect.c, topic.c:
  4653.     fixed handle_connection() to not pass 404 messages to peer servers.
  4654.  
  4655.     added a 404 handler to notify the mods+ of the error message received
  4656.  
  4657.     added a 607 handler to pass the server message to a remote user
  4658.  
  4659.     * main.c, util.c:
  4660.     still more fixes for compressed data.
  4661.  
  4662.     * compress.c, config.c, main.c, opennap.h, sample.conf, util.c:
  4663.     added compression_threshold config var (default 8 kbytes) to controll when
  4664.     compression is applied in order to reduce load
  4665.  
  4666.     * Makefile.in, main.c, opennap.h, util.c:
  4667.     more fixes for compressed_data()
  4668.  
  4669.     * compress.c: fixed bug in compressed_data()
  4670.  
  4671.     * compress.c, main.c, util.c:
  4672.     another fix for compressed data packet.  the uncompressed lenght was
  4673.     overwriting the compressed length.
  4674.  
  4675.     * Makefile.in, sample.conf, util.c:
  4676.     fixed bug in send_queued_data() when compressing packets
  4677.  
  4678.     * Makefile.am, Makefile.in:
  4679.     needed to add compress.o to opennap_DEPENDENCIES to get it to compile
  4680.  
  4681.     * Makefile.in, TODO:
  4682.     added rcs id tag to Makefile.am
  4683.  
  4684.     * compress.c: forgot to add compress.c to cvs
  4685.  
  4686. 2000-01-24  drscholl  <drscholl@users.sourceforge.net>
  4687.  
  4688.     * Makefile.am, Makefile.in, README, configure.in, sample.conf, synch.c:
  4689.     sync_user() should not flush data to peer servers now that compression
  4690.     support is in place, since it will defeat the benefits
  4691.  
  4692.     sync_user() did not relay the client ip address.
  4693.  
  4694.     * Makefile.am, Makefile.in, config.c, configure, configure.in, main.c, sample.conf:
  4695.     fixes for optional compilation with libz, since its not needed for standalone
  4696.     servers.
  4697.  
  4698.     * ChangeLog, Makefile.am, Makefile.in, README, config.c, configure, configure.in, main.c, opennap.h, util.c:
  4699.     added compressed data (10200) message, and "compression_level" variable
  4700.  
  4701.     * ChangeLog, config.c, main.c, napster.txt, opennap.h, remove_connection.c, resume.c, search.c, server_connect.c, util.c:
  4702.     added client_queue_length and server_queue_length config variables to tune the
  4703.     maximum queue lengths allowed
  4704.  
  4705.     fixed resume messages which used broken sequences %ul and %uh
  4706.  
  4707.     added max_results server config variable to control the maximum number of
  4708.     matches returned on a client search
  4709.  
  4710.     * ChangeLog, Makefile.in, opennap.h, server_connect.c:
  4711.     added server version (801) support
  4712.  
  4713.     * TODO, server_connect.c:
  4714.     fixed test for fields[2] being set to argc==3 in notify_mods() call from
  4715.     server_connect()
  4716.  
  4717.     * ChangeLog, Makefile.in, configure, configure.in, main.c, metaserver.c, opennap.h, server_connect.c, util.c:
  4718.     metaserver should write a \n after the ip:port
  4719.  
  4720.     send_queued_data() should return without doing anything if there is no data
  4721.     to send
  4722.  
  4723.     added check for /dev/random and substitute simple random number generation
  4724.     on systems without it
  4725.  
  4726.     * ChangeLog, server_connect.c:
  4727.     server_connect() should check the return from split_line() to get the number
  4728.     of arguments
  4729.  
  4730.     * ChangeLog, Makefile.in, add_file.c, config.c, configure, configure.in, debug.c, debug.h, hotlist.c, join.c, login.c, main.c, napster.txt, opennap.h, part.c, ping.c, privmsg.c, remove_connection.c, resume.c, search.c, server_connect.c, upload_complete.c, util.c, whois.c:
  4731.     added additional integrity checking to the validate_*() functions in
  4732.     debug mode
  4733.  
  4734.     server variables can be dynamically changed using the 810 client message
  4735.     (colten edwards)
  4736.  
  4737.     login() should ensure that the given speed is in the 0-10 range
  4738.  
  4739.     search() was sending the host using %d instead of %lu
  4740.  
  4741.     CONFIG struct now holds default values for variables, and functions
  4742.     config_defaults() and free_defaults() is used to manage the memory
  4743.  
  4744.     added macro VALID_LEN to test a pointer for enough allocated memory
  4745.  
  4746.     * ChangeLog, config.c, main.c, opennap.h, sample.conf:
  4747.     added option to specify the maximum number of channels a user may join.
  4748.  
  4749. 2000-01-22  drscholl  <drscholl@users.sourceforge.net>
  4750.  
  4751.     * README, download.c, opennap.h, util.c, whois.c:
  4752.     whois prints the dotted-quad form of the ip address, not an integer
  4753.  
  4754.     * ChangeLog, join.c, main.c, opennap.h:
  4755.     enforce a 5 channel limit for users
  4756.  
  4757.     added cl option to allow only privileged users to create channels
  4758.  
  4759.     * kill_user.c, login.c, util.c, whois.c:
  4760.     fixed another crash in login()
  4761.  
  4762.     whois was checking the level of the person getting whois'ed, not the
  4763.     person issuing the whois
  4764.  
  4765. 2000-01-21  drscholl  <drscholl@users.sourceforge.net>
  4766.  
  4767.     * TODO, login.c, util.c:
  4768.     fix for bad password segfault in login
  4769.  
  4770.     * ChangeLog, hotlist.c, login.c:
  4771.     hotlist fix for users that are already logged in
  4772.  
  4773.     * ChangeLog, NEWS, README, login.c:
  4774.     fixed segfault in login().  split_line() does not write a 0 in the last
  4775.     element of the arrary, you have to check the return value for the size
  4776.  
  4777.     * README, main.c, opennap.h, privmsg.c, remove_connection.c, server_connect.c, server_login.c:
  4778.     added support for the server linking commands
  4779.  
  4780.     * level.c:
  4781.     backed out change because you cant set a level >= your own
  4782.  
  4783.     * level.c:
  4784.     fix so that users can set others to leech status
  4785.  
  4786.     * ChangeLog, TODO, ban.c, change.c, download.c, kill_user.c, level.c, login.c, muzzle.c, napster.txt, opennap.h, whois.c:
  4787.     ban did not record the time of the ban
  4788.  
  4789.     notify_mods changed to only notify local mods
  4790.  
  4791.     change data port command was not passed to peer servers
  4792.  
  4793.     added additional information to whois for moderators
  4794.  
  4795.     change set level command so that mods+ can change the level of a user below
  4796.     their level
  4797.  
  4798.     the 218-221 message were not passed to peer servers
  4799.  
  4800.     * ChangeLog, Makefile.am, Makefile.in, ban.c, login.c, main.c, opennap.h:
  4801.     added support for ban, unban and banlist (612, 614, 615, 616, 629)
  4802.  
  4803.     * README, db.c, login.c, opennap.h:
  4804.     login should report error on nick already in use to the client before
  4805.     disconnecting it
  4806.  
  4807. 2000-01-20  drscholl  <drscholl@users.sourceforge.net>
  4808.  
  4809.     * ChangeLog, README, TODO, announce.c, download.c, hash.h, kill_user.c, level.c, login.c, main.c, muzzle.c, opennap.h, server_connect.c, synch.c, topic.c, unmuzzle.c, whois.c:
  4810.     changed user level from bitmask to integer.
  4811.  
  4812.     kill and muzzle operations now notify all mods+
  4813.  
  4814.     added the wallop command (627)
  4815.  
  4816.     user levels are now leech, user, moderator, admin and elite.
  4817.  
  4818.     change server operator to elite instead of admin.
  4819.  
  4820.     * napster.txt, opennap.h:
  4821.     added some additional protocol information to napster.txt
  4822.  
  4823.     * metaserver.c:
  4824.     fixes for bsdi 4.1.  accept's 3rd arg should be socklen_t
  4825.  
  4826.     * login.c, main.c, opennap.h, server_connect.c:
  4827.     fixes for compilation under bsdi 4.1
  4828.  
  4829.     * ChangeLog, configure, configure.in, download.c, main.c, opennap.h, server_connect.c, util.c:
  4830.     endian checking was made more portable.  now use autoconf to define
  4831.     WORDS_BIGENDIAN where appropriate.
  4832.  
  4833.     * ChangeLog, main.c:
  4834.     update_stats() now prints a message to the log with the current total
  4835.     library size.
  4836.  
  4837.     * add_file.c, free_user.c, main.c, opennap.h, remove_file.c:
  4838.     server now stores internal library size in kilobytes to avoid rounding
  4839.     errors.
  4840.  
  4841.     * ChangeLog, FAQ, NEWS, README, hash.c, login.c:
  4842.     channel and user names are now case insensitive.
  4843.  
  4844.     * ChangeLog, Makefile.am, Makefile.in, configure, configure.in, hotlist.c, join.c, login.c, main.c, metaserver.c, opennap.h, search.c, server_connect.c, util.c:
  4845.     added additional debugging sanity checking for major structures.
  4846.  
  4847.     * ChangeLog, Makefile.am, Makefile.in, configure, configure.in, spynap.c:
  4848.     configure now will look for mysql in /usr/local as well as /usr
  4849.  
  4850.     * ChangeLog, TODO, hotlist.c, login.c, main.c, napster.txt, opennap.h, spynap.c, util.c:
  4851.     fixed hotlist bug which crashed the server.
  4852.  
  4853. 2000-01-19  drscholl  <drscholl@users.sourceforge.net>
  4854.  
  4855.     * ChangeLog, change.c, napster.txt, opennap.h:
  4856.     added support for the change speed command (700)
  4857.  
  4858.     * download.c, main.c, napster.txt, opennap.h, spynap.c:
  4859.     added support for 626 (data port error)
  4860.  
  4861.     added download support to spynap reference client
  4862.  
  4863. 2000-01-18  drscholl  <drscholl@users.sourceforge.net>
  4864.  
  4865.     * NEWS, README, spynap.c:
  4866.     began to add download support to spynap.  /search and /browse results are
  4867.     now cached, and you can do /get <n> to request a file.  downloading does not
  4868.     actually work yet.
  4869.  
  4870. 2000-01-17  drscholl  <drscholl@users.sourceforge.net>
  4871.  
  4872.     * ChangeLog, README, login.c, main.c, opennap.h, search.c, spyserv.c:
  4873.     login() did not set the user->host field so transfers between different
  4874.     machines would fail.
  4875.  
  4876.     format_request() did not terminate the output string.
  4877.  
  4878.     added 10013 numeric for passing the ip address of clients to peer servers
  4879.  
  4880. 2000-01-16  drscholl  <drscholl@users.sourceforge.net>
  4881.  
  4882.     * ChangeLog, download.c, main.c, napster.txt, opennap.h, search.c, spyserv.c, upload_complete.c:
  4883.     added support for downloading from firewalled clients (500,501)
  4884.  
  4885.     search patterns need to have %, ', _ and \ quoted in the SQL query
  4886.  
  4887. 2000-01-15  drscholl  <drscholl@users.sourceforge.net>
  4888.  
  4889.     * ChangeLog, Makefile.am, Makefile.in, download.c, download_ack.c, main.c, napster.txt, opennap.h, spyserv.c, upload_complete.c:
  4890.     fixed download problem where the 204 message was sending the information
  4891.     for the person making the request, not the person holding the file.
  4892.  
  4893.     added -l option to specify the local port on the spyserv agent
  4894.  
  4895.     * ChangeLog, configure, configure.in, db.c, download.c, download_ack.c, main.c, opennap.h, upload_complete.c:
  4896.     fixed several of the download numerics since they were not doing what
  4897.     the protocol specifies.
  4898.  
  4899. 2000-01-14  drscholl  <drscholl@users.sourceforge.net>
  4900.  
  4901.     * add_file.c, download.c, main.c, opennap.h, util.c:
  4902.     fixed DOS filename quoting in download()
  4903.  
  4904.     added SO_REUSEADDR option to main socket
  4905.  
  4906.     * add_file.c:
  4907.     single quote needs to be escaped too.
  4908.  
  4909.     * add_file.c, spynap.c:
  4910.     DOS backslashes need to be quoted before adding to the SQL database.
  4911.  
  4912.     * patchnap.c:
  4913.     offset was off by one in patchnap.c
  4914.  
  4915.     * ChangeLog:
  4916.     post release changelog update (oops)
  4917.  
  4918.     * hotlist.c:
  4919.     hotlist contains list of CONNECTION, not USER.
  4920.  
  4921.     * configure, configure.in:
  4922.     updated configure.in to version 0.07
  4923.  
  4924.     * AUTHORS, Makefile.am, Makefile.in, NEWS, announce.c, client_quit.c, close_db.c, db.c, debug.c, debug.h, download.c, download_ack.c, free_user.c, hash.c, hash.h, metaserver.c, motd.c, muzzle.c, opennap.h, part_channel.c, patchnap.c, remove_connection.c, remove_file.c, resume.c, server_connect.c, server_login.c, spynap.c, spyserv.c, synch.c, unmuzzle.c, upload_complete.c:
  4925.     final email address fixes in copyright notices
  4926.  
  4927.     removed spyserv and spynap from the default build list.  now we just include
  4928.     the sources.
  4929.  
  4930.     updated to version 0.07.
  4931.  
  4932. 2000-01-13  drscholl  <drscholl@users.sourceforge.net>
  4933.  
  4934.     * change.c:
  4935.     forgot to add change.c to the CVS repository
  4936.  
  4937.     * configure, configure.in, main.c, util.c, NEWS, config.c:
  4938.     updated some more email addresses in the copyright notices
  4939.  
  4940.     updated version number to 0.06
  4941.  
  4942.     * ChangeLog, Makefile.am, Makefile.in, TODO, add_file.c, browse.c, hotlist.c, join.c, kill_user.c, level.c, list_channels.c, list_users.c, login.c, main.c, napster.txt, opennap.h, part.c, ping.c, privmsg.c, public.c, search.c, spynap.c, topic.c, whois.c:
  4943.     fixed email address in many copyright notices
  4944.  
  4945.     added support for the change data port (703) command
  4946.  
  4947.     added #define for HANDLER to be used as a prototype for all protocol handler
  4948.     routines
  4949.  
  4950. 2000-01-12  drscholl  <drscholl@users.sourceforge.net>
  4951.  
  4952.     * TODO, debug.h, hash.h, main.c, opennap.h, spynap.c:
  4953.     fixed copyright notices on some files.
  4954.  
  4955.     fixed segmentation fault in new read() loop in handle_connection().
  4956.  
  4957.     fixed broken /browse command in spynap.
  4958.  
  4959.     * ChangeLog, Makefile.in, main.c, opennap.h, remove_connection.c:
  4960.     each connection is now given its own input buffer so that we can use
  4961.     nonblocking read() calls.
  4962.  
  4963.     * ChangeLog, TODO, add_file.c, remove_file.c, search.c, spynap.c, util.c:
  4964.     array_add() should not assert if the list is empty
  4965.  
  4966.     server was reporting library size in MB, not GB
  4967.  
  4968.     search strings should have spaces converted to % for SQL queries
  4969.  
  4970.     added a /msg command to the spynap sample client
  4971.  
  4972. 2000-01-11  drscholl  <drscholl@users.sourceforge.net>
  4973.  
  4974.     * spynap.c:
  4975.     Updated the spynap client application to add a few more text commands for
  4976.     easier use in testing other numerics.
  4977.  
  4978.     * AUTHORS, NEWS, add_file.c, announce.c, browse.c, client_quit.c, config.c, db.c, debug.c, download.c, download_ack.c, free_user.c, hash.c, hotlist.c, join.c, kill_user.c, level.c, list_channels.c, list_users.c, login.c, main.c, metaserver.c, motd.c, muzzle.c, napster.txt, part.c, part_channel.c, ping.c, privmsg.c, public.c, remove_connection.c, remove_file.c, resume.c, search.c, server_connect.c, server_login.c, spynap.c, spyserv.c, synch.c, topic.c, unmuzzle.c, upload_complete.c, util.c, whois.c:
  4979.     Updated copyright notice to reflect new year and new email address.
  4980.  
  4981.     * .indent.pro, FAQ, client_quit.c, create_db.sql, global.h, hotlist.c, level.c, list_channels.c, list_users.c, md5.h, md5c.c, metaserver.c, muzzle.c, napster.txt, ping.c, remove_file.c, resume.c, sample.conf, sample.motd, server_connect.c, server_login.c, spynap.c, spyserv.c, synch.c, topic.c, unmuzzle.c, upload_complete.c, util.c:
  4982.     Initial import of the opennap-0.05 work in progress.
  4983.  
  4984.     * .indent.pro, FAQ, client_quit.c, create_db.sql, global.h, hotlist.c, level.c, list_channels.c, list_users.c, md5.h, md5c.c, metaserver.c, muzzle.c, napster.txt, ping.c, remove_file.c, resume.c, sample.conf, sample.motd, server_connect.c, server_login.c, spynap.c, spyserv.c, synch.c, topic.c, unmuzzle.c, upload_complete.c, util.c:
  4985.     New file.
  4986.  
  4987.     * add_file.c, announce.c, browse.c, close_db.c, config.c, configure, configure.in, db.c, debug.c, debug.h, download.c, download_ack.c, free_user.c, hash.c, hash.h, install-sh, join.c, kill_user.c, login.c, main.c, missing, mkinstalldirs, motd.c, opennap.h, part.c, part_channel.c, privmsg.c, public.c, remove_connection.c, search.c, whois.c:
  4988.     Initial import of the opennap-0.05 work in progress.
  4989.  
  4990.     * add_file.c, announce.c, browse.c, close_db.c, config.c, configure, configure.in, db.c, debug.c, debug.h, download.c, download_ack.c, free_user.c, hash.c, hash.h, install-sh, join.c, kill_user.c, login.c, main.c, missing, mkinstalldirs, motd.c, opennap.h, part.c, part_channel.c, privmsg.c, public.c, remove_connection.c, search.c, whois.c:
  4991.     New file.
  4992.  
  4993.     * INSTALL, Makefile.am, NEWS, TODO, aclocal.m4:
  4994.     Initial import of the opennap-0.05 work in progress.
  4995.  
  4996.     * INSTALL, Makefile.am, NEWS, TODO, aclocal.m4:
  4997.     New file.
  4998.  
  4999.     * AUTHORS, COPYING, ChangeLog, Makefile.in, README:
  5000.     Initial import of the opennap-0.05 work in progress.
  5001.  
  5002.     * AUTHORS, COPYING, ChangeLog, Makefile.in, README:
  5003.     New file.
  5004.  
  5005.